[tandemmebel-deploy-snolla-0-42-0] 🟢 done. Собран на VDS, стек 20 healthy, acceptance#1 SSR /projects→200, acceptance#2 completeness-DoD с VDS зелёный. Cutover остаётся DNS-gated ([tandemmebel-web-vds-deploy]) — образ к флипу=ed96b18. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.3 KiB
5.3 KiB
tandemmebel-deploy-snolla-0-42-0
Goal
Пересобрать VDS-staging образ tandemmebel на движке @snollajs/snolla@0.42.0 (core 0.24.0 / data 0.14.1) — суперсидит ранее принятый 0.16.2-staging (b02ca18). Топология = вариант A (оператор): пересборка staging ДО cutover, прод не трогаем in-place. Прод-флип остаётся тем же DNS-gated событием (reg.ru→89.253.255.94, хозяин сайта) из paused [tandemmebel-web-vds-deploy]. Этот таск готовит образ + перепрогоняет гейты.
Key files
~/projects/tandemmebel.ru/apps/web/package.json:12— пин@snollajs/snolla(сейчас 0.40.0, нужен 0.42.0)~/projects/tandemmebel.ru/deploy/Dockerfile— multi-stage node:22-slim buildhost-stacks/vds-kzntsv/tandemmebel.compose.yml— Portainer стек 20, source-of-truth (staging-host; боевые Host() только в cutover-комменте).wiki/concepts/labtools.pro-vds-deploy-runbook.md— рунбук-зеркало
Decisions log
- 2026-07-04: CLOSED 🟢. Staging пересобран на 0.42.0 (ed96b18), оба acceptance-гейта GREEN на новом образе (не унаследованы). Caveat dev-source подтвердился эмпирически: дельта 0.40→0.42 (archive-роуты) инертна на этой теме — completeness 172/172 + gallery 12/12 без диффов. Cutover остаётся отдельным DNS-gated шагом. Follow-up (не блокер): Dockerfile печёт VERDACCIO_TOKEN в ARG/ENV → build-secret (передано dev/workshop).
- 2026-07-04: BLOCKED на входе. Проверил репо-провенанс: snolla-репо на 0.42.0 (
bcee2d4, опубликовано), НО tandemmebel.ru origin/master9fa30a7пинит@snollajs/snolla 0.40.0— консюмер-бамп 0.40→0.42 не закоммичен/не запушен (ни один реф не содержит 0.42/0.24). Byte-verify «199/199 на 0.42.0» из тела таски гонялся против непушнутого локального бампа. Запросил у dev-source (victor/snolla inbox) коммит-бамп + sha. Peer-дисциплина: заявленный state таски ≠ реальность репо → репорт оператору, не проглатывать. - 2026-07-04: Топология A ратифицирована оператором+workshop. Cutover остаётся DNS-gated (внешнее событие).
Open questions
- Опубликован ли
@snollajs/snolla@0.42.0в verdaccio/registry так, чтоyarn installв docker-build его резолвит? (snolla commit говорит «published» — проверить при build) - Развести с paused
[tandemmebel-web-vds-deploy]— пометить старый пин суперсиженным, не плодить два конкурирующих образа.
Completed steps
- Вызваны обязательные скилы (using-tasks, project-discipline, using-vds-ops).
- Репо-провенанс проверен — блокер выявлен (консюмер-пин не запушен).
- Запрос на пуш бампа отправлен dev-source (victor/snolla).
- Dev-source запушил бамп → sha
ed96b18, верифицирован (пин+yarn.lock=0.42.0/core0.24.0/data0.14.1), verdaccio publish подтверждён (snolla 0.42.0, core 0.24.0, data 0.14.1 present). - Собрал образ на VDS
registry.kzntsv.site/tandemmebel:ed96b18(digest ca4da79, 583MB, BUILD_EXIT=0), запушил в registry. - Обновил compose (source-of-truth) на ed96b18, PUT стека 20 через Portainer API (env 8/8 сохранён, PullImage) → контейнер healthy, running==ed96b18.
- Acceptance#1: SSR / →200, /projects →200 (real title, не 500).
- Acceptance#2 completeness-DoD с VDS: sitemap 172/172 паритет (0 real-fail), gallery-grid 12/12 точный паритет, крошки+title==prod, sharp webp serve-bytes ✅.
- Обновил paused [tandemmebel-web-vds-deploy] — образ к флипу = ed96b18 (суперсидит b02ca18).
- Таска → 🟢 done.
Notes
- Acceptance (из тела таски на борде): (1) pre-deploy SSR
/projects+blog-listing → 200 не 500 (новые SELECT-колонки); (2) completeness-DoD перепрогнать на НОВОМ 0.42.0-образе (188 URL + gallery grid 15 роутов), не наследовать GREEN с 0.16.2; (3) archive-страницы НЕ блокер (projects archivesPath=""); (4) rollback наготове. - Build-рецепт:
git -C ~/projects/tandemmebel.ru archive <sha> | ssh vitya@89.253.255.94 tar -x;docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN -t registry.kzntsv.site/tandemmebel:<sha> . && push. Portainer PUT/POST через curl -X + node (НЕ PS Invoke-RestMethod). - Smoke гнать С VDS (воркстейшн ловит LAN-DNS-перехват прод-доменов).
- Notify: OpeItcLoc03/workshop (оркестратор) + heads-up victor/snolla (dev-source).