Skip to content

Деплой на stage

Окружение stage служит финальным этапом валидации перед продакшном. Пуш в ветку stage запускает автоматическую сборку и деплой, как и в dev. Ключевое отличие — в назначении: stage должен максимально точно зеркалировать продакшн.

ПараметрЗначение
Веткаstage
ТриггерАвтоматический при пуше
Домен*.stage.amzhub.ai
Цель NomadStage-кластер / namespace

Назначение

Stage существует для ответа на один вопрос: «Безопасно ли отправлять это изменение в продакшн?»

Для надёжного ответа stage-окружение должно зеркалировать prod во всём, что имеет значение:

  • Те же лимиты ресурсов и количество реплик
  • Те же переменные окружения и feature-флаги (за исключением prod-секретов)
  • Та же конфигурация Nomad-задачи
  • Те же правила маршрутизации Traefik

TIP

Если изменение работает в stage, но ломается в prod — окружения разошлись. Рассматривайте паритет stage-prod как постоянную задачу обслуживания.

Шаги деплоя

1. Влейте dev в stage

bash
git checkout stage
git pull origin stage
git merge dev
git push origin stage

Или откройте merge request в GitLab из dev в stage.

WARNING

Избегайте cherry-pick отдельных коммитов в stage. Всегда мержьте полную ветку dev, чтобы ветки оставались синхронизированными и не расходились.

2. CI собирает образ

Пайплайн запускается автоматически при пуше:

  • Этап build компилирует приложение и создаёт контейнерный образ.
  • Образ тегируется и отправляется в реестр контейнеров.

3. CI деплоит в Nomad

После успешной сборки:

  1. CI подключается к stage KVM-хосту по SSH.
  2. Файл Nomad-задачи рендерится с переменными для stage.
  3. Задача отправляется в Nomad (nomad job run).
  4. Nomad загружает новый образ и запускает контейнер.

4. Проверьте на stage-домене

https://stage.amzhub.ai          # main app
https://docs-stage.amzhub.ai     # docs site

Чек-лист валидации stage

Перед продвижением в продакшн проверьте следующее в stage:

  • [ ] Приложение запускается без ошибок
  • [ ] Health-эндпоинт возвращает 200 OK
  • [ ] Основные пользовательские сценарии работают от начала до конца
  • [ ] Нет новых ошибок в логах приложения
  • [ ] Производительность приемлема (без регрессий)
  • [ ] Переменные окружения и конфигурация корректны
  • [ ] Миграции базы данных (если есть) применены успешно
bash
# Quick health check
curl -s https://stage.amzhub.ai/health | jq .

# Check Nomad job status
nomad job status my-service

Stage vs. Dev

АспектDevStage
НазначениеРазработка и отладкаПредпродакшн-валидация
Соответствие конфигурации prodПриблизительноеТочное зеркало
ДанныеСинтетические / тестовыеДанные, близкие к продакшн
Ожидание стабильностиМожет иногда ломатьсяДолжен быть стабильным

DANGER

Никогда не используйте stage как песочницу для разработки. Это общее окружение для валидации. Поломка stage блокирует всю команду от релиза в продакшн.

Что дальше

После валидации stage, продвиньте в продакшн, влив stage в main и запустив ручной деплой.

Документация по инфраструктуре