|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
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 1m14s
CI / openapi-codegen-check (pull_request) Successful in 2m8s
CI / backend-tests (pull_request) Successful in 16m22s
scripts/smoke-mera-perimeter.sh — единственная проверка, которая видит публичный периметр целиком (короткие адреса, 301 с длинных, публичный API, закрытость B2B-путей на публичном домене). Запускался он только ночным cron'ом 06:17 UTC, поэтому регресс жил до суток, и находил его либо тот же cron, либо владелец — ровно тот сценарий, против которого проверки и писались. Добавлен job `perimeter-smoke` в ОБА пайплайна: конфиг прокси (deploy.yml) и фронт МЕРЫ (deploy-tradein.yml) едут раздельно, сломать периметр может каждый. Отдельный job, а не шаг внутри deploy: «выкатили» и «периметр цел» — два разных вердикта, красный смоук не должен читаться как неудавшийся деплой. Идёт только при deploy.result == 'success' — поверх несостоявшейся выкатки проверять нечего. Перед смоуком — ожидание готовности по ДВУМ признакам (лэндинг 200 и API 401): `up -d --force-recreate` отдаёт управление раньше, чем бэкенд начинает отвечать, и без ожидания смоук ловил бы гонку, а не регресс. По истечении 150 с ожидание не падает, а печатает warning и пускает смоук — иначе «не успел подняться» и «периметр сломан» слились бы в один красный шаг. Дублирование 20 строк в двух пайплайнах осознанное: `workflow_call` под act_runner не гарантирован, а зависимость, которая может молча не сработать, здесь хуже повтора. Заодно: - ci.yml: гейт `bash -n` на все shell-скрипты (14 файлов) — shellcheck'а в репозитории нет, а опечатка в смоуке обнаружилась бы следующим утром и выглядела бы как регресс периметра. Гейт падает, если не нашёл ни одного файла: пустая маска дала бы зелёный шаг, который ничего не проверяет. - perimeter-smoke.yml: push-триггер на сам скрипт — правка проверяется сразу. Проверено: смоук против прода сейчас зелёный целиком, 27 из 27 проверок, то есть в пайплайн въезжает работающий гейт, а не заведомо красный. Опасение из задачи про внешний геокодер проверено по коду и оказалось у́же: `geocoder.suggest` — цепочка «кадастр → DaData → Nominatim → []», каждый внешний тир под `except Exception`, отказ и квота дают 200 с пустым списком. Покраснеть проверка может только на зависании дольше 15 с. Записал это в самом скрипте, ожидание не ослаблял. Closes #2917 |
||
|---|---|---|
| .. | ||
| auth | ||
| claude-hooks | ||
| bootstrap_glitchtip.sh | ||
| bootstrap_schema_migrations.sh | ||
| build_osrm.sh | ||
| check-migration-lock-timeout.py | ||
| check-workflow-ports.py | ||
| cleanup-merged-worktrees.sh | ||
| cleanup-stale-claims.sh | ||
| cleanup-worktrees-aggressive.py | ||
| cleanup_ghosts.py | ||
| migrate_kg_to_obsidian.py | ||
| setup-bot-env.ps1 | ||
| setup-couchdb.sh | ||
| smoke-mera-perimeter.sh | ||
| start-analyst.ps1 | ||
| start-backend.ps1 | ||
| start-bot.ps1 | ||
| start-frontend.ps1 | ||
| start-qa.ps1 | ||
| start-reviewer.ps1 | ||