4.6 KiB
4.6 KiB
Orchestrator Deploy Hook
scripts/orchestrator-deploy-hook.sh — хост-скрипт деплоя orchestrator с health-чеком и авто-rollback.
Как работает
Режим --deploy (по умолчанию)
- Захват текущего образа — до рестарта записывает ID образа работающего контейнера в
$PREV_IMAGE_FILE(best-effort, не падает если сервис не запущен). - git pull — обновляет код репозитория.
- Рестарт контейнера —
docker compose --profile $COMPOSE_PROFILE up -d --no-build $TARGET_SERVICE. - Health-цикл — 10 попыток × 6с = до 60с. Критерий: HTTP 200 + тело содержит
"status":"ok".- Успех →
exit 0, лог "Deploy SUCCESS". - Провал → авто-rollback (шаг 5).
- Успех →
- Авто-rollback — восстанавливает образ из
$PREV_IMAGE_FILE, рестарт, повторный health 5×3с.- Если восстановился →
exit 1(деплой провалился, откат успешен). - Если и откат не помог →
exit 2(критично).
- Если восстановился →
Режим --rollback
Вручную откатывает сервис на предыдущий образ из $PREV_IMAGE_FILE.
Переменные окружения
| Переменная | Дефолт | Описание |
|---|---|---|
TARGET_SERVICE |
orchestrator-staging |
Имя docker-compose сервиса |
TARGET_PORT |
8501 |
Порт health-check |
TARGET_IMAGE |
orchestrator-orchestrator-staging |
Имя образа для retag при rollback |
COMPOSE_PROFILE |
staging |
Docker compose profile (пусто = без профиля) |
PREV_IMAGE_FILE |
$REPO/.deploy-prev-image-staging |
Файл для сохранения предыдущего образа |
LOG |
/var/log/orchestrator/deploy-hook.log |
Лог-файл (fallback: $REPO/deploy-hook.log) |
⚠️ Дефолт — всегда STAGING. Прод активируется только явным переопределением env.
Примеры запуска
Staging (дефолт, безопасно)
cd /home/slin/repos/orchestrator
bash scripts/orchestrator-deploy-hook.sh --deploy
# или просто:
bash scripts/orchestrator-deploy-hook.sh
Прод (осознанный шаг, Этап 5)
TARGET_SERVICE=orchestrator \
TARGET_PORT=8500 \
TARGET_IMAGE=orchestrator-orchestrator \
COMPOSE_PROFILE="" \
PREV_IMAGE_FILE=/home/slin/repos/orchestrator/.deploy-prev-image-prod \
bash scripts/orchestrator-deploy-hook.sh --deploy
Ручной rollback staging
bash scripts/orchestrator-deploy-hook.sh --rollback
Коды выхода
| Код | Значение |
|---|---|
0 |
Деплой успешен, сервис здоров |
1 |
Деплой провалился; откат выполнен (или пропущен) |
2 |
Деплой провалился И откат тоже провалился (критично) |
Логи
/var/log/orchestrator/deploy-hook.log
Каждая строка с UTC-таймстампом в формате [2026-06-05T06:30:00Z].
Разница с enduro-deploy-hook.sh
| Функция | enduro-deploy-hook.sh | orchestrator-deploy-hook.sh |
|---|---|---|
| Захват PREV_IMG | ✅ | ✅ |
| git pull | ✅ | ✅ |
| Рестарт | ✅ | ✅ |
| Health-цикл (60с) | ❌ | ✅ 10×6с |
| Авто-rollback | ❌ | ✅ |
| Параметризация (env) | ❌ хардкод | ✅ дефолт=staging |
| Compose profile | ❌ | ✅ --profile staging |