3.8 KiB
| paths | |||||
|---|---|---|---|---|---|
|
Deploy conventions
Post-deploy verification (MANDATORY)
После КАЖДОГО успешного merge+deploy на main — немедленно spawn qa-tester subagent с playwright smoke по тому, что merged.
Why: Без auto-smoke user сам ловит prod TypeErrors / 4xx / overlay bugs которые qa-tester catched бы за 2 мин. Плохой UX + потерянное время на P0 hotfixes уже после того как user увидел проблему. User rule (2026-05-18): «проверяй через плэйврайт сразу после деплоя».
How to apply:
- После
mcp__forgejo__get_pull_requestmerged: trueИ подтверждения deploy success (HTTP 200 на routes / GHA run finished / user сказал «deploy прошёл») —Agentsubagent_type=qa-tester. - Prompt: routes изменённые в PR + expected behaviour из PR body + console errors check + critical API calls (4xx/5xx detection) + regression baseline (
/,/health,/landing/stats). - Background OK — wait notification, не блокировать остальной flow.
- НЕ дожидаться user feedback «не работает» — qa-tester ловит сам.
Reference incident: PR #346 (2026-05-18) deploy → user сам нашёл prod 500 на by-bbox, потом 400 на analyze, потом TypeError на poi-score, потом UI overlap. Каждое ловилось бы playwright smoke по /site-finder/analysis/{cad}.
Path triggers (Forgejo Actions, .forgejo/workflows/)
backend/**,frontend/**,Caddyfile,caddy/**,docker-compose.prod.yml,data/sql/**,ops/glitchtip-auth-forwarder/**,.forgejo/workflows/deploy.yml→deploy.yml(main Site Finder stack)- trade-in изменения →
deploy-tradein.yml(отдельный stack; paths-filter base = last deployed SHA → накопленный diff, fail-safe build-all) docker-compose.obsidian.yml,scripts/setup-couchdb.sh,docs/obsidian-livesync.md→.forgejo/workflows/deploy-obsidian.ymldocs/**alone → НЕ триггерит деплой
После изменения .env на VPS
docker compose up -d --force-recreate --no-deps <service>
docker compose restart НЕ перечитывает env_file.
Caddyfile
Bind-mounted → нужен явный caddy reload после изменения. deploy.yml делает автоматически после compose up -d.
Sentry release tracking
SENTRY_RELEASE=$IMAGE_TAG пишется в backend/.env.runtime на VPS через sed — не полная перезапись файла (там user-managed COUCHDB_PASSWORD и пр.).
VPS git state
deploy.yml делает git reset --hard origin/main → любые ручные правки в /opt/gendesign стираются. .env-файлы выживают (в .gitignore).
DB migrations через deploy
data/sql/NN_*.sql применяются до compose up -d. Если SQL падает → deploy останавливается (exit 1), containers не обновляются.
Diagnose: GHA log "Apply DB migrations". См. .claude/rules/sql.md для migration order.
Запреты
- ❌ Менять
env_fileсекреты вdocker-compose*.yml— секреты через VPS.envфайлы - ❌ Полностью перезаписывать
.env.runtime— толькоsedдля конкретных переменных - ❌
git pullна VPS вручную — deploy.yml уже делаетgit reset --hard - ❌ Hardcode tags / SHA в compose files —
${IMAGE_TAG}через env