fix(deploy): гейт деплоя ПТИЦЫ — мёртвый worker/beat/frontend больше не уезжает зелёным #3334
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3334
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3324-ptica-deploy-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #3324 (закрывает часть «гейт деплоя»; периметр-трио остаётся в issue — НЕ auto-close). Аудит 01-02.09, линза devops. Единственной проверкой был
curl backend /health; образец дисциплины лежал в соседнем deploy-tradein.yml.Healthcheck'и (compose)
celery inspect ping -d celery@$$(hostname)— адресно в ЭТОТ узел: без-dответил бы любой воркер на брокере. 60s/30s/retries 5 (3 минуты флапа Redis не приговаривают исправный worker), start_period 90s. Stderr пробы виден в.State.Health.Log.inspect pingне отвечает — проба по mtimecelerybeat-schedule*в /tmp (< 10 мин). Порог:sync_every=180s+ поминутные zombie-cleanup → живой beat обновляет файл ~каждые 3 мин, 10 мин = 3× запас.Все три пробы прогнаны на живом проде до мержа: worker
pongrc=0, beat rc=0, фронт HTTP 200,/usr/bin/hostnameв контейнере есть.Гейт (deploy.yml, после существующего curl; порядок «миграции → код» не тронут)
wait_healthyпоdocker inspectдля backend/worker/beat/frontend (240s);command_timeout: 30mна SSH-шаге (дефолт 10m убил бы диагноз в worst-case ~17 мин);check-latest-image-revision.sh; worker исключается, если guard #3029 его намеренно не пересоздавал;RestartCountза 15 с — crash-loop не проскакивает;health_rc/frontend_rc/image_rc → rc+ явный exit; все вызовы|| var=$?в той же строке.Цена
Обычный деплой: ~+60-100 с. Сломанный worker уходит в unhealthy за ~390 с — гейт красный раньше по таймауту 240 с (в логе будет «starting» + логи контейнера).
Прод-приёмка после мержа (план)
rc=0;rm /app/.venv/bin/celeryв контейнере → unhealthy → dispatch-деплой красный с диагнозом; восстановить--force-recreate --no-deps worker;