Деплой на stage
Окружение stage служит финальным этапом валидации перед продакшном. Пуш в ветку stage запускает автоматическую сборку и деплой, как и в dev. Ключевое отличие — в назначении: stage должен максимально точно зеркалировать продакшн.
| Параметр | Значение |
|---|---|
| Ветка | stage |
| Триггер | Автоматический при пуше |
| Домен | *.stage.amzhub.ai |
| Цель Nomad | Stage-кластер / namespace |
Назначение
Stage существует для ответа на один вопрос: «Безопасно ли отправлять это изменение в продакшн?»
Для надёжного ответа stage-окружение должно зеркалировать prod во всём, что имеет значение:
- Те же лимиты ресурсов и количество реплик
- Те же переменные окружения и feature-флаги (за исключением prod-секретов)
- Та же конфигурация Nomad-задачи
- Те же правила маршрутизации Traefik
TIP
Если изменение работает в stage, но ломается в prod — окружения разошлись. Рассматривайте паритет stage-prod как постоянную задачу обслуживания.
Шаги деплоя
1. Влейте dev в stage
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
После успешной сборки:
- CI подключается к stage KVM-хосту по SSH.
- Файл Nomad-задачи рендерится с переменными для stage.
- Задача отправляется в Nomad (
nomad job run). - Nomad загружает новый образ и запускает контейнер.
4. Проверьте на stage-домене
https://stage.amzhub.ai # main app
https://docs-stage.amzhub.ai # docs siteЧек-лист валидации stage
Перед продвижением в продакшн проверьте следующее в stage:
- [ ] Приложение запускается без ошибок
- [ ] Health-эндпоинт возвращает
200 OK - [ ] Основные пользовательские сценарии работают от начала до конца
- [ ] Нет новых ошибок в логах приложения
- [ ] Производительность приемлема (без регрессий)
- [ ] Переменные окружения и конфигурация корректны
- [ ] Миграции базы данных (если есть) применены успешно
# Quick health check
curl -s https://stage.amzhub.ai/health | jq .
# Check Nomad job status
nomad job status my-serviceStage vs. Dev
| Аспект | Dev | Stage |
|---|---|---|
| Назначение | Разработка и отладка | Предпродакшн-валидация |
| Соответствие конфигурации prod | Приблизительное | Точное зеркало |
| Данные | Синтетические / тестовые | Данные, близкие к продакшн |
| Ожидание стабильности | Может иногда ломаться | Должен быть стабильным |
DANGER
Никогда не используйте stage как песочницу для разработки. Это общее окружение для валидации. Поломка stage блокирует всю команду от релиза в продакшн.
Что дальше
После валидации stage, продвиньте в продакшн, влив stage в main и запустив ручной деплой.