Skip to content
PПромтбук
RUEN
01Деплой

CI/CD-пайплайн

Шаги от пуша до прода: lint, типы, тесты, превью, прод, нотификации.

Спроектируй CI/CD-пайплайн для {{platform}}.

Принципы

  • Быстрый feedback: PR-чек ≤ 5 минут
  • Параллель там где можно
  • Кеширование зависимостей (caches существуют не зря)
  • Прод-деплой только из main

Структура

on:
  pull_request:
  push:
    branches: [main]

jobs:
  # === Быстрые проверки параллельно ===
  lint:
    runs-on: ubuntu-latest
    steps:
      - checkout
      - setup-node + cache
      - npm ci
      - npm run lint

  typecheck:
    steps:
      - checkout
      - setup-node + cache
      - npm ci
      - npx tsc --noEmit

  test:
    steps:
      - checkout
      - setup-node + cache
      - npm ci
      - npm test -- --ci

  # === Сборка с артефактом ===
  build:
    needs: [lint, typecheck, test]
    steps:
      - checkout
      - setup-node + cache
      - npm ci
      - npm run build
      - upload-artifact dist/

  # === Деплой ===
  deploy-preview:
    if: github.event_name == 'pull_request'
    needs: [build]
    steps:
      - download-artifact
      - deploy  preview URL
      - comment на PR с URL

  deploy-prod:
    if: github.ref == 'refs/heads/main'
    needs: [build]
    steps:
      - download-artifact
      - deploy  production
      - smoke-tests
      - notify Slack

Best practices

Кеширование

  • node_modules через actions/cache или встроенное setup-node@v4 cache
  • Next.js .next/cache для inc-builds
  • Docker layers если деплой через контейнер

Параллелизм

  • lint / typecheck / test параллельно — независимы
  • Не делай sequential там где можно parallel

Smoke tests после деплоя

  • Health endpoint вернул 200?
  • Главная страница отдаёт нужный заголовок?
  • Если упало — автомат-rollback

Notifications

  • Slack/Discord: успешный прод-деплой + ID коммита
  • При ошибке: тег ответственного
  • Не спамь — только важное

Secrets

  • В platform-secret-store, не в YAML
  • Минимум доступа на каждом шаге (least privilege)
  • Production-секреты — отдельный набор, доступны только prod-deploy job

Branch protection

  • Main: запрет прямого push
  • Все статусы должны быть зелёными для мержа
  • 1+ ревью

Что НЕ кладите в CI

  • Долгие e2e (отдельный nightly run)
  • Visual regression (отдельная категория, своя инфраструктура)
  • Performance benchmarks (выделенный hardware)

Мониторинг самого CI

  • Сколько в среднем длится PR-чек?
  • Какие шаги flaky?
  • Какие дорогие — оптимизируй

Анти-паттерны

  • 30-минутный PR-чек — никто не дождётся
  • Все секреты в одном env-блоке (даже когда не нужны)
  • Деплой автоматом без human approval для критичных проектов
  • Игнорирование красного билда "просто перезапусти"
К подразделу «Деплой»
Похожие промты