layero promote
- Деплой указывается позиционным аргументом:
layero promote <commit-sha>. Флага--deploy=не существует. Sha берётся изlayero deploys list. layero promote --rollbackне существует — CLI отвечаетunknown option. Про рабочий откат — Rollback.
Перевести production apex проекта на указанный деплой. Двигает указатель production_deploy_id — без пересборки, апекс начинает отдавать новый артефакт практически сразу (задержку даёт только короткий кеш на edge, до минуты).
Зачем
Production-флоу в Layero «как у Vercel»:
- Push в любую ветку → preview-URL ветки
- Тестируем, шерим, сравниваем
- Готовы выкатить — promote на тот ready-деплой, который проверили
Без promote'а apex продолжает отдавать предыдущий production. Это страховка от случайных релизов после merge'а в main (если auto-promote выключен для команды).
Использование
# promote последнего ready-деплоя default-ветки
layero promote
# promote по commit SHA (первые 7+ символов) или полному deploy id
layero promote a3f9c2b
# конкретная ветка → её последний ready
layero promote --branch=staging
# откат: вернуть apex на прошлый рабочий деплой — по его sha
layero promote <commit-sha>
# CI: без подтверждения
layero promote --yes
Что происходит
- CLI находит deploy (по позиционному sha, по последнему ready в
--branch, или по последнему ready в default-ветке). - Показывает план:
promote plan:from: 1743a29 2026-05-08 20:30 v2.4.1 — bugfix releaseto: ce70191 2026-05-19 07:09 feature: new pricing pageproceed? [y/N]
- После confirm бэкенд:
- Атомарно обновляет
projects.production_deploy_id(CTE захватывает старое значение вprevious_production_deploy_id— для rollback'а). - Записывает
promote_events(audit log: кто, когда, source='cli', prev → new). - Инвалидирует resolver-кеш через Postgres NOTIFY.
- Атомарно обновляет
- Edge подхватывает новый артефакт сразу; ранее закэшированные ответы обновляются по короткому TTL (до минуты).
Откат
layero rollback вернёт предыдущий успешный деплой вместе с апексом —
если production обслуживается той же веткой (починено 27.07.2026; до этого
двигалось только окружение, и апекс оставался на сломанной версии).
Если возвращаться надо на конкретный старый деплой, а не на предыдущий, —
promote по нужному sha:
layero deploys list # взять commit_sha рабочего билда
layero promote ff0d1b86 --yes # вернуть на него апекс
Платформа хранит на проекте два указателя — production_deploy_id и
previous_production_deploy_id; второй обновляется при каждом promote, поэтому
предыдущий рабочий деплой всегда видно в истории промоутов. Подробности —
Rollback.
--promote как флаг layero deploy
Если хочется одной командой: build → promote, не дожидаясь ready'я в UI:
layero deploy --branch=hot-fix --promote --yes
Билд завершится, CLI автоматом перейдёт в promote и подтвердит. Эквивалентно layero deploy ... && layero promote <last-sha>, но без второй ручной команды.
Ограничения
- Promote можно сделать только на
ready-деплой сs3_path(или зарегистрированным runtime-контейнером). - Для runtime-проектов (SSR Next, Streamlit, Gradio, Flask) promote переключает указатель моментально, но running-инстанс старого билда продолжает отвечать пока его не дёрнут (cold-start триггернёт следующий запрос на новом артефакте).
- Если auto-promote default-ветки включён, любой следующий push в default перетрёт ваш ручной promote. Выключите auto-promote в Settings проекта если хотите оставить ручной контроль за production.
Альтернативы
- В дашборде на странице деплоя — кнопка «Promote to production».
- На странице проекта в Production card — кнопка «Откатить». Она работает на стороне бэкенда и двигает production-указатель; с 27.07.2026 то же делает и CLI-команда
rollback. - История промоутов — Project → Deploys → «Promote history» (видно auto vs ui vs cli + кто).
Как это связано с rollback
Раньше у каждой ветки был свой канонический хост, и layero rollback менял
environments.active_deploy_id — то есть работал по-веточно. Под V071 модель
доменов стала одна-на-проект, и откат должен двигать production-указатель
проекта. Какое-то время CLI-команда за этой сменой не поспевала и апекс не
возвращала; починено 27.07.2026 — теперь rollback двигает и указатель, если
апекс обслуживается той же веткой. Подробности — Rollback.