fix(deploy): подменять фронт МЕРЫ отдельной командой — окно простоя 30–90 с уходит (#3274, часть 1/2) #3442
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3442
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3274-part1-deploy-swap"
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?
Часть 1 из 2 по #3274. Не трогает
caddy/**намеренно — чтобы мерж не запускал полный деплой ПТИЦЫ с--force-recreate caddy(~1 мин отказа всех доменов). Вторая половина (ретрай в Caddy) поедет отдельным PR.Корень оказался не тем, что в постановке. Гипотеза «подмена контейнера медленная» неверна. Прод сам провёл A/B в один день (
docker inspect .Created/.StartedAt, оба деплоя МЕРЫ 10.09):up -d(15:01)up -d(16:42)docker compose up -d <список>идёт в две фазы: сначала create (старый контейнер каждого сервиса останавливается и удаляется — занятоcontainer_name), потом start в порядке зависимостей. Между фазами фронта физически нет. Воспроизведено на стенде по меткам: соседи создаются сразу, стартуют через 41 с.Правка:
frontendубран из общегоSERVICESв.forgejo/workflows/deploy-tradein.ymlи пересоздаётся своей командой после пачки — в его графе один сервис, фазы идут подряд. 30–90 с → ~0,5 с.Замер на стенде (реальный образ
tradein-mvp-frontend+caddy:2, проба 5 раз/с,scripts/probe-deploy-window.sh):Проба умеет считать
000отдельной строкой (это периметр, не простой) и самую длинную серию не-200; у неё есть--selftest, который поймал у автора занижение окна на один шаг.Прод «до»: три 503 на лендинге в окне 15:01:46→15:02:06 плюс 30 с между create и start; замер из issue от 05.09 — 10 образцов 503 подряд ≈ 45 с.
Прод «после»: не снят — за время работы (19:09–19:52Z, 1257 образцов) штатного деплоя не случилось,
origin/mainне двигался. Контроль самой пробы с хоста: 1257/1257 × 200, ноль000— значит любой не-200 в окне деплоя будет настоящим простоем, а не отбоем периметра.Приёмка на проде (записана ДО правки, в терминах поведения):
ssh poincare '/tmp/probe-deploy-window.sh https://meraocenka.ru/ 0.2 900 /tmp/probe-after.tsv';000;docker inspect tradein-frontend -f '{{.Created}} {{.State.StartedAt}}'— разрыв ~0,5 с, не 30 с;"status":503на публичных путяхmeraocenka.ruза сутки после мержа — 0.Откат:
git revertодного коммита, возвращает окно 30–90 с. Схемы, тома, образы,docker-compose*.ymlне тронуты.