ci(release): независимый деплой окружений (testnet/main разным темпом) #150
Reference in New Issue
Block a user
Delete Branch "ci/independent-env-deploy"
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?
Заменяет «паровоз»
dev → testnet → mainнезависимыми деплоями: прод и тест катятся разным темпом и на разные версии одновременно, без диверджа веток и без merge-конфликтов.Почему
FF-паровоз держался на том, что
promote.sh mainберёт источникомtestnet—mainмог получить только то, что уже наtestnet. Неудобно: нельзя катить прод и тест в своём темпе, нет независимого отката/hotfix.Идея
testnetиmain— два самостоятельных fast-forward-указателя на выбранный релизный тегdev. Оба живут на линейной историиdev, поэтому двигаются только вперёд по FF — расхождений и конфликтов быть не может, но каждый контур двигается независимо.Изменения
scripts/promote.sh <testnet|main> [<версия|ref>]— FF выбранного релизного тега (по умолчанию последний наorigin/dev) на ветку окружения.mainбольше не зависит отtestnet. Пинит к тегу-cut (а не к сырой верхушке dev) — прод/тест не получат непомеченную WIP после cut. Только вперёд; откат — через dispatch..github/workflows/release.yaml— уworkflow_dispatchпоявились inputsenvironment(testnet/main) +ref. Это покрывает то, что FF не умеет: откат на старую версию, редеплой без бампа, hotfix в один контур. Сборка идёт из вычекнутогоref, окружение — изinputs.environment. Авто-триггер (push в testnet/main с изменениемlerna.json) сохранён.scripts/RELEASE.md— модель и инварианты переписаны.Сохранённые принципы деплоя
Бамп версии один раз на
dev(cut), образы по версии,BUILD_MODEпо окружению, webhooks per env, npm publish/доки только наmain, «no direct commits on testnet/main».Как пользоваться после merge
Проверки
bash -nскрипта — OK; YAML парсится; dry-run резолва тега на реальном репо:git describe origin/dev→v2026.6.16, версия из тега читается. End-to-end workflow_dispatch на act_runner не гонял — стоит проверить ручным запуском после merge.Примечание: одностроку про релиз-флоу в
CLAUDE.mdобновлю отдельно из mono-ai-1.