|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 11s
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) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m8s
CI / backend-tests (pull_request) Successful in 17m30s
27.08 прод сутки жил на позавчерашнем коммите, и это нашлось только руками. Замена IP сервера (#3110) осиротила секрет DEPLOY_HOST: deploy.yml падал на `dial tcp ***:***: i/o timeout`, при этом CI оставался зелёным, PR продолжали мержиться, а deploy-infra.yml исправно обновлял Beget и создавал впечатление, что всё в порядке. Проверок, которые спрашивают не «прошёл ли прогон», а «доехал ли код», не было ни одной. Этот сторож — ровно такая: ежечасно читает HEAD с прод-хоста и сверяет с tip main. Три исхода вместо двух. «Хост не ответил» (2) отделён от «на хосте не тот код» (1) — это разные аварии с разной первой командой в разборе, и сегодня погорели именно на их смешении: недоступность выглядела как обычный красный прогон. Льготный период 30 минут гасит ложную тревогу на деплое, который ещё в полёте: ежечасный сторож неизбежно попадёт в окно между мержем и концом выката, а сторож, которого научились игнорировать, хуже отсутствующего. Логика вынесена в scripts/check-deploy-drift.sh и не ходит по сети — SSH живёт в workflow, где секреты. Благодаря этому тест ИСПОЛНЯЕТ настоящий скрипт, а не пересказывает его: ошибка в самом bash видна только при запуске. Read-only: один ssh и git rev-parse, ничего не деплоит. |
||
|---|---|---|
| .. | ||
| auth | ||
| claude-hooks | ||
| bootstrap_glitchtip.sh | ||
| bootstrap_schema_migrations.sh | ||
| build_osrm.sh | ||
| check-caddy-snippet-mounts.py | ||
| check-deploy-drift.sh | ||
| check-latest-image-revision.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 | ||
| setup-metrics-exporter-dsn.sh | ||
| setup-metrics-grafana-role.sh | ||
| setup-metrics-secrets.sh | ||
| smoke-mera-perimeter.sh | ||
| start-analyst.ps1 | ||
| start-backend.ps1 | ||
| start-bot.ps1 | ||
| start-frontend.ps1 | ||
| start-qa.ps1 | ||
| start-reviewer.ps1 | ||