gendesign/scripts
bot-backend db03e93781
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
ci: смоук периметра МЕРЫ запускается сразу после деплоя
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
2026-08-19 12:56:06 +05:00
..
auth fix(ops): repair broken main-DB backup + harden auth scripts/docs (#71 #427 #429 #428) 2026-06-13 20:13:04 +05:00
claude-hooks chore(claude): security hardening — dangerous-commands hook, settings в git, restricted DB, throttle (#2150) 2026-07-02 15:23:11 +00:00
bootstrap_glitchtip.sh fix(infra): bootstrap_glitchtip — \gexec instead of DO block (psql var trap) (#219) 2026-05-16 15:54:29 +00:00
bootstrap_schema_migrations.sh feat(infra): auto-apply data/sql/*.sql migrations in deploy pipeline (#150) (#151) 2026-05-15 08:06:54 +03:00
build_osrm.sh feat(analyze): per-category OSRM routing (foot vs driving) (#39 A3) 2026-06-27 04:30:25 +05:00
check-migration-lock-timeout.py fix(migrations): закрепить lock_timeout для блокирующего DDL и ловить невалидные индексы (#2791) 2026-08-07 11:21:28 +00:00
check-workflow-ports.py ci: гейт против публикации занятых на VPS портов в workflow (#2757) (#2759) 2026-08-06 21:40:05 +00:00
cleanup-merged-worktrees.sh fix(devops): cleanup-merged-worktrees.sh — 3 бага, найденные вживую на 69 забытых worktree (#2418) 2026-07-04 13:00:14 +00:00
cleanup-stale-claims.sh chore(claude): extend self-extending tripwire + pause-bots guard for stale-claims 2026-05-29 17:36:20 +03:00
cleanup-worktrees-aggressive.py fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
cleanup_ghosts.py fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
migrate_kg_to_obsidian.py fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
setup-bot-env.ps1 feat(claude): env-vars refactor + stale-claim cron (Phase 2 finalization) 2026-05-28 00:24:45 +03:00
setup-couchdb.sh feat(deploy): split obsidian stack from main + path-filtered GHA 2026-05-11 09:51:31 +03:00
smoke-mera-perimeter.sh ci: смоук периметра МЕРЫ запускается сразу после деплоя 2026-08-19 12:56:06 +05:00
start-analyst.ps1 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP 2026-05-30 10:38:10 +03:00
start-backend.ps1 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP 2026-05-30 10:38:10 +03:00
start-bot.ps1 chore(agents): reviewer back to Opus (revert model-part of aa3d012) 2026-05-31 17:16:57 +03:00
start-frontend.ps1 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP 2026-05-30 10:38:10 +03:00
start-qa.ps1 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP 2026-05-30 10:38:10 +03:00
start-reviewer.ps1 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP 2026-05-30 10:38:10 +03:00