Skip to content

Деплой

CI/CD Workflows

WorkflowТриггерНазначение
ci.ymlPR в main / push в mainBranch-naming guard + проверка форматирования
deploy-dev.ymlPush в main / manual (ref)Деплой инфраструктуры на dev
release.ymlManual (version)Тег vX.Y.Z на HEAD main
deploy-prod.ymlManual (tag)Guard (тег на main) + деплой инфраструктуры на prod

Ветки — trunk-based

main — единственная долгоживущая ветка, ветки dev НЕТ. Фиче-ветки (feat/, fix/, hotfix/, chore/, docs/, ci/, …) идут PR-ом сразу в main. Prod НИКОГДА не деплоится из ветки — только из тега.

feat/* → PR → main (auto-deploy dev) → release.yml (тег vX.Y.Z) → deploy-prod (tag=vX.Y.Z)

Автоматический деплой (Dev)

Каждый push в main запускает деплой на dev-сервер. Прогнать WIP-ветку без мержа:

bash
gh workflow run deploy-dev.yml -f ref=<ветка>

Деплой в Prod (из тега)

bash
gh workflow run release.yml -f version=X.Y.Z     # создаёт тег vX.Y.Z на main HEAD
gh workflow run deploy-prod.yml -f tag=vX.Y.Z    # guard: тег должен быть ancestor main

Флаг -f only_deploy=true поднимает уже лежащие на сервере файлы без копирования.

Hotfix, когда в main лежит незарелизенный WIP: ветка от живого прод-тега (git checkout -b hotfix/x v1.4.0) → фикс → PR в main → новый тег → deploy-prod.

GitHub Secrets

Для работы CI/CD необходимы следующие секреты:

SSH доступ

СекретОписание
DEV_INTEG_HOSTIP dev-сервера
DEV_INTEG_USERSSH пользователь dev
DEV_INTEG_KEYSSH приватный ключ dev
PROD_INTEG_HOSTIP prod-сервера
PROD_INTEG_USERSSH пользователь prod
PROD_INTEG_KEYSSH приватный ключ prod

Doppler

СекретОписание
DEV_DOPPLER_TOKENDoppler токен dev
PROD_DOPPLER_TOKENDoppler токен prod

Cloudflare (для документации)

СекретОписание
CLOUDFLARE_PAGES_API_TOKENAPI токен Cloudflare Pages
CLOUDFLARE_ACCOUNT_IDID аккаунта Cloudflare

Процесс деплоя

  1. Checkout — получение кода
  2. SSH Connect — подключение к серверу
  3. Create Directory — создание /opt/integ/
  4. Copy Files — копирование docker-compose.yml
  5. Generate .env — получение секретов из Doppler
  6. Docker Compose Up — запуск сервисов
  7. Health Check — проверка работоспособности

Локальный запуск

bash
# Установка зависимостей
npm install

# Генерация .env
./scripts/generate-env.sh dev

# Проверка форматирования
npm run format:check

# Форматирование кода
npm run format

Health Check

Скрипт scripts/health-check.sh проверяет:

  • Доступность Traefik
  • Ответ от API
  • Ответ от Admin
  • Статус PostgreSQL (только dev)

Integ Deploy Documentation