[infra] contract-openapi: checkout-fallback на archive-архив — снимает красные статусы всех PR (#59) #63

Merged
embeddevio merged 1 commits from fix/59-checkout-fallback into main 2026-10-29 20:58:36 +03:00
Owner

Что

actions/checkout@v4 падает на любом коммите в этом репозитории: дефект Gitea git-http (#59) — git-upload-pack отдаёт пустой pack, fatal: protocol error: bad pack header, exit 128.

Из-за этого статусы contract-openapi / openapi-contract и contract-openapi / ts-client-is-current всегда красные и любой PR не может получить зелёный combined status (включая PR #60 — CI-пайплайн #17, где все джобы ci / * зелёные или штатно skipped).

Как исправлено

Оба job'а contract-openapi.yml приведены к тому же приёму, что уже работает в .gitea/workflows/ci.yml:

  1. actions/checkout@v4 → continue-on-error: true, id: checkout.
  2. При steps.checkout.outcome == 'failure' — checkout fallback (archive tarball): GET /archive/<sha>.tar.gz + распаковка (endpoint работает, pack — нет).
  3. ts-client-is-current теперь умеет работать без .git (после archive-fallback): сравнение sha256sum сгенерированного ui/src/api/generated/schema.d.ts вместо git diff. При живом checkout остаётся прежний git diff --exit-code.

Семантика проверок не менялась.

Проверено на живом runner'е

Run #64 (push fix/59-checkout-fallback, sha ca14ae6) — conclusion: success:

Job Результат Шаги
openapi-contract ✅ success checkout → archive-fallback → python 3.12 → install deps → ruff+mypy → pytest
ts-client-is-current ✅ success checkout → archive-fallback → node 20 → regenerate + compare

До фикса те же job'ы падали в первые 40–50 с: runs/60/jobs/178, runs/60/jobs/179, runs/62/jobs/186, runs/62/jobs/187.

Merge-order

Лендить этот PR первым: после него feat/17-ci достаточно перетолкнуть (или перезапустить runs), чтобы combined status стал зелёным и PR #60 можно было мержить без force_merge.

Корневой дефект git-http остаётся в #59 (нужен доступ к хосту Gitea 192.168.1.111) — фикс является обходом и сам перестанет срабатывать, когда upload-pack починят.

Refs #59, Refs #17

## Что `actions/checkout@v4` падает на **любом** коммите в этом репозитории: дефект Gitea git-http (#59) — `git-upload-pack` отдаёт пустой pack, `fatal: protocol error: bad pack header`, exit 128. Из-за этого статусы `contract-openapi / openapi-contract` и `contract-openapi / ts-client-is-current` всегда красные и **любой PR не может получить зелёный combined status** (включая PR #60 — CI-пайплайн #17, где все джобы `ci / *` зелёные или штатно skipped). ## Как исправлено Оба job'а `contract-openapi.yml` приведены к тому же приёму, что уже работает в `.gitea/workflows/ci.yml`: 1. `actions/checkout@v4` → `continue-on-error: true`, `id: checkout`. 2. При `steps.checkout.outcome == 'failure'` — `checkout fallback (archive tarball)`: `GET /archive/<sha>.tar.gz` + распаковка (endpoint работает, pack — нет). 3. `ts-client-is-current` теперь умеет работать без `.git` (после archive-fallback): сравнение `sha256sum` сгенерированного `ui/src/api/generated/schema.d.ts` вместо `git diff`. При живом checkout остаётся прежний `git diff --exit-code`. Семантика проверок не менялась. ## Проверено на живом runner'е Run [#64](http://192.168.1.111:3000/embeddevio/awg-dash/actions/runs/64) (push `fix/59-checkout-fallback`, sha `ca14ae6`) — **conclusion: success**: | Job | Результат | Шаги | |---|---|---| | `openapi-contract` | ✅ success | checkout → archive-fallback → python 3.12 → install deps → ruff+mypy → pytest | | `ts-client-is-current` | ✅ success | checkout → archive-fallback → node 20 → regenerate + compare | До фикса те же job'ы падали в первые 40–50 с: `runs/60/jobs/178`, `runs/60/jobs/179`, `runs/62/jobs/186`, `runs/62/jobs/187`. ## Merge-order Лендить этот PR **первым**: после него `feat/17-ci` достаточно перетолкнуть (или перезапустить runs), чтобы combined status стал зелёным и PR #60 можно было мержить без `force_merge`. Корневой дефект git-http остаётся в #59 (нужен доступ к хосту Gitea 192.168.1.111) — фикс является обходом и сам перестанет срабатывать, когда upload-pack починят. Refs #59, Refs #17
embeddevio added 1 commit 2026-10-28 23:40:02 +03:00
ci(contract): checkout-fallback на archive-архив (обход дефекта git-http, #59)
contract-openapi / openapi-contract (push) Successful in 1m3s
contract-openapi / ts-client-is-current (push) Successful in 1m32s
contract-openapi / openapi-contract (pull_request) Successful in 56s
contract-openapi / ts-client-is-current (pull_request) Successful in 42s
ca14ae6819
actions/checkout падает на всех коммитах: `git-upload-pack` отдаёт пустой pack
(`bad pack header`, exit 128), из-за чего статусы `contract-openapi/*` всегда красные
и любой PR (включая #60) не может получить зелёный combined status.

Источники забираются архивом `/archive/<sha>.tar.gz` (endpoint работает), проверка
TS-клиента без .git сравнивает sha256 сгенерированного schema.d.ts.

Refs #59, Refs #17
embeddevio merged commit 04e7b5667f into main 2026-10-29 20:58:36 +03:00
Sign in to join this conversation.