|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m22s
CI / openapi-codegen-check (pull_request) Successful in 2m30s
CI / backend-tests (pull_request) Successful in 15m29s
Раннер запускает и job, и сервис-контейнеры с `--network host` (проверено: NetworkMode=host у job-контейнеров), а на хосте слушают боевые сервисы. Поэтому `services: postgres` + `ports: 5432:5432` не поднимает тестовую БД, а уводит сборку в БОЕВОЙ Postgres: занять порт контейнер не может, и `localhost:5432` из job'а — прод. В #2745 спасло несовпадение пароля. scripts/check-workflow-ports.py ловит публикацию занятого порта в любой форме (`ports:` блоком, инлайн-списком, `docker run -p/--publish`) и роняет сборку. Список портов — замер `ss -ltnp` на bot-server 2026-08-06, не догадки: 22, 53, 80, 443, 2222, 3000, 5432, 8000. Redis/CouchDB/GlitchTip в список НЕ попали: они на хосте не слушают (bridge-сети, порты без публикации), запрет ронял бы сборку на ровном месте. Шаг встроен в changes-job ci.yml — тот и так бежит на каждом PR и уже сделал checkout, отдельный слот дефицитного раннера не занимается. Заодно снят капкан в шапке ci.yml: комментарий «FUTURE: добавить service — см. .github/workflows/ci.yml как образец» указывал ровно на анти-пример (`ports: 5432:5432`), безвредный там лишь потому, что GitHub Actions у нас не исполняется. Теперь он указывает на рабочий способ из ci-tradein.yml. Refs #2757, #2745 |
||
|---|---|---|
| .. | ||
| ci-tradein.yml | ||
| ci.yml | ||
| deploy-obsidian.yml | ||
| deploy-tradein.yml | ||
| deploy.yml | ||
| perimeter-smoke.yml | ||
| stale-claims.yml | ||