Skip to content

CI/CD

GitHub Actions workflows для автоматического запуска тестов и деплоя документации.

Обзор

WorkflowТриггерОписание
ci.ymlPush / PRLint, format, typecheck
e2e-dev.ymlsaas-api / saas-client deploy → devE2E тесты на dev-окружении
e2e-prod.ymlsaas-api / saas-client deploy → prodSmoke E2E тесты на production
docs.ymlPush (docs/**)Деплой документации на CF Pages

Схема запуска E2E тестов

E2E тесты запускаются автоматически после деплоя через repository_dispatch. При деплое saas-api прогоняются все тесты, при деплое saas-client — только client тесты (API не менялся).

ci.yml

Проверка качества кода при каждом push и pull request:

bash
pnpm lint           # ESLint
pnpm format:check   # Prettier
pnpm typecheck      # TypeScript

e2e-dev.yml

Полные E2E тесты на dev-окружении. API и Client тесты запускаются параллельно.

Триггеры:

  • repository_dispatch: dev-deploy-completed — после деплоя saas-api на dev → запускает API + Client тесты
  • repository_dispatch: client-deploy-completed — после деплоя saas-client на dev → запускает только Client тесты
  • workflow_dispatch — ручной запуск (все тесты)

Джобы:

  • e2e-api — API тесты (pnpm test:api), пропускается при client-deploy-completed
  • e2e-client — Client browser тесты (pnpm test:client), запускается всегда

Concurrency

Используется concurrency: e2e-dev с cancel-in-progress: true — повторный триггер отменяет текущий запуск.

e2e-prod.yml

Smoke тесты на production — только health check и аутентификация.

Триггеры:

  • repository_dispatch: prod-deploy-completed — после деплоя saas-api или saas-client на prod
  • workflow_dispatch — ручной запуск

Тесты: tests/api/health.e2e.ts + tests/api/auth.e2e.ts

Production

На production запускается минимальный набор smoke тестов, чтобы не создавать лишнюю нагрузку и тестовые данные.

docs.yml

Деплой VitePress документации на Cloudflare Pages.

Триггеры:

  • Push в main / dev при изменениях в docs/** или .github/workflows/docs.yml
  • Ручной запуск (workflow_dispatch)

Шаги:

  1. Checkout кода
  2. Setup Node.js 22 + pnpm
  3. Установка зависимостей (pnpm install --frozen-lockfile)
  4. Сборка документации (pnpm docs:build)
  5. Создание CF Pages проекта (если не существует)
  6. Деплой через cloudflare/wrangler-action@v3

Секреты GitHub:

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

CF Pages проект: saas-e2e-docs

Ветки

  • Push в main → production deployment
  • Push в dev → preview deployment с отдельным URL

Автоматическое создание проекта

Workflow автоматически создает CF Pages проект при первом деплое:

bash
PROJECT_EXISTS=$(curl -s -X GET \
    "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
    -H "Authorization: Bearer $API_TOKEN" | jq '.success')

if [ "$PROJECT_EXISTS" != "true" ]; then
    curl -s -X POST \
        "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
        -d "{\"name\": \"$PROJECT_NAME\", \"production_branch\": \"main\"}"
fi

Следующие шаги

SaaS E2E Test Documentation