layero rollback
Откатить активный деплой на предыдущий ready-артефакт. Без пересборки — артефакт уже лежит в Object Storage с прошлого успешного деплоя.
Зачем
Production упал после релиза. Нужно мгновенно вернуть рабочий артефакт,
не дожидаясь нового билда. Pересборка предыдущего commit'а из git-истории
не сработает идемпотентно: npm install против сегодняшнего npm-registry
может дать другой node_modules (lockfile drift, transitive republish).
Rollback берёт точно тот же артефакт, что работал раньше.
Использование
# default-ветка → последний ready, который не текущий active
layero rollback
# конкретная ветка
layero rollback --branch=staging
# на конкретный deploy (по полному id или начальным 7+ символов SHA)
layero rollback --deploy=a3f9c2b
layero rollback --deploy=550e8400-e29b-41d4-a716-446655440000
# CI: без подтверждения
layero rollback --yes
Что происходит
-
CLI вытаскивает список деплоев ветки и показывает текущий active + target кандидат:
rollback plan:from: 1743a29 2026-05-08 20:30 v2.4.1 — bugfix releaseto: 8b34f01 2026-05-08 19:42 v2.4.0 — initial 2.4proceed with rollback? [y/N] -
После confirm бэкенд:
- Меняет
environments.active_deploy_idна target deploy. - Сбрасывает CDN-кеш hostname'а ветки (новые запросы получат старый артефакт; старые edge-кеши по TTL обновятся за ~5 мин).
- Возвращает обновлённый deploy с новым активным флагом.
- Меняет
-
CDN propagation — ~30–60 секунд.
Ограничения
- Кандидат должен быть в статусе
readyи иметьs3_path(артефакт в S3). Failed/queued/building деплои в кандидаты не идут. - Rollback к самому себе (текущий active) — 400 error.
- Для runtime-проектов (SSR Next, Streamlit, Gradio, Flask) rollback флипает указатель на старый артефакт, но running-инстанс старого деплоя нужно явно дёрнуть — следующий request триггернёт cold start.
Альтернативы
- В дашборде на странице Deploys у каждого ready-деплоя есть кнопка «Откатить» (кроме активного). Тот же endpoint.
- Если хочется rebuild того же commit'а (а не reuse артефакта) —
делайте новый
layero deployс тем же кодом или жмите Redeploy в дашборде.