Розділ 12: Розгортання¶
Аудиторія: DevOps, платформні інженери
CI/CD конвеєр¶
Push to unified-platform
│
▼
build-and-push.yml (automatic)
├── Run contract & recovery tests
├── Build API image
├── Build Dashboard image
└── Push to Artifact Registry
│
▼ (manual trigger)
deploy.yml (workflow_dispatch)
├── SSH into VM via IAP tunnel
├── git pull on VM
├── docker compose pull (prebuilt images)
├── docker compose up -d --force-recreate
├── Health check (60s wait + curl localhost:8000/health)
└── Post-deploy contract check
Чому розгортання виконується вручну¶
Автоматичне розгортання при push було вимкнено після інциденту в січні 2026 року, коли автоматичні розгортання конфліктували з ручними SSH-розгортаннями, пошкоджуючи контейнери та спричиняючи втрату даних. Робочий процес розгортання тепер вимагає:
- Ручного запуску через інтерфейс GitHub Actions ("Run workflow")
- Явного вибору цільового середовища (staging або production)
- Введення
DEPLOYяк підтвердження - Необов'язкового поля причини для журналу аудиту
Теги образів¶
Образи позначаються скороченим git SHA: sha-XXXXXXX. Крок розгортання використовує GITHUB_SHA для формування тегу, тому розгорнута версія завжди відповідає конкретному коміту.
Як виконати розгортання¶
- Переконайтеся, що збірка пройшла успішно:
gh run list --workflow=build-and-push.yml --limit=1 - Запустіть розгортання:
gh workflow run deploy.yml \ --ref unified-platform \ -f target=production \ -f confirm=DEPLOY \ -f reason="your reason here" - Моніторинг:
gh run watch <run_id> --exit-status - Перевірка:
curl -sS https://scan.rtb.cat/api/health | jq -r '.git_sha,.version'
Перевірка розгортання¶
Ендпоінт /api/health повертає:
{
"git_sha": "94e9cbb0",
"version": "sha-94e9cbb"
}
Порівняйте git_sha з комітом, який ви планували розгорнути.
Перевірка контрактів після розгортання¶
Після розгортання робочий процес запускає scripts/contracts_check.py всередині контейнера API. Це перевіряє, що контракти даних (непорушні правила від імпорту до виведення через API) дотримуються. Якщо перевірка не пройшла:
- З
ALLOW_CONTRACT_FAILURE=false(за замовчуванням): розгортання позначається як невдале. - З
ALLOW_CONTRACT_FAILURE=true(тимчасовий обхід): розгортання завершується успішно з попередженням. Цей обхід необхідно видалити після розслідування.
Staging та production¶
| Середовище | Назва VM | Домен |
|---|---|---|
| Staging | catscan-production-sg2 |
(внутрішній) |
| Production | catscan-production-sg |
scan.rtb.cat |
Спершу розгортайте на staging, перевірте, а потім розгортайте на production.
Відкат¶
Для відкату розгорніть попередній стабільний коміт:
- Визначте останній стабільний SHA з git log або попередніх запусків розгортання.
- Переключіться на цей SHA у гілці unified-platform (або використайте
--refіз зазначенням коміту). - Запустіть робочий процес розгортання.
Окремого механізму відкату не існує. Це просто розгортання старішої версії.
Пов'язані розділи¶
- Огляд архітектури: що саме розгортається
- Моніторинг стану: перевірка успішності розгортання