Skip to content

Деплой

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

Окружения

ОкружениеВеткаURL приложенияURL документации
ProductionmainDocker на сервереadmin.integ.docs.happ.tools
DevelopmentdevDocker на сервереadmin.integ.docs.dev.happ.tools

Деплой приложения

Приложение деплоится как Docker контейнер на сервер через SSH.

Workflow файлы

  • .github/workflows/deploy-dev.yml — деплой dev окружения
  • .github/workflows/deploy-prod.yml — деплой production окружения

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

mermaid
flowchart LR
    A[Push в ветку] --> B[Build Docker Image]
    B --> C[Push в GHCR]
    C --> D[SSH на сервер]
    D --> E[Pull & Restart]
  1. Build — собирается Docker образ с Doppler для секретов
  2. Push — образ загружается в GitHub Container Registry
  3. Deploy — через SSH обновляется контейнер на сервере

Секреты для деплоя приложения

СекретОписание
DEV_DOPPLER_TOKENDoppler токен для dev окружения
PROD_DOPPLER_TOKENDoppler токен для production
DEV_INTEG_SSH_HOSTSSH хост dev сервера
DEV_INTEG_SSH_USERSSH пользователь
DEV_INTEG_SSH_KEYSSH приватный ключ
PROD_INTEG_SSH_HOSTSSH хост prod сервера
PROD_INTEG_SSH_USERSSH пользователь
PROD_INTEG_SSH_KEYSSH приватный ключ
GHCR_PATGitHub Personal Access Token для Container Registry

Деплой документации

Документация деплоится на Cloudflare Pages автоматически при изменениях в папке docs/.

Workflow файл

.github/workflows/docs.yml

Триггеры

  • Push в ветки main или dev
  • Изменения в папке docs/**
  • Изменения в .github/workflows/docs.yml

Процесс деплоя документации

mermaid
flowchart LR
    A[Push в docs/] --> B[npm ci]
    B --> C[npm run docs:build]
    C --> D[Wrangler Pages Deploy]
    D --> E[Cloudflare Pages]
  1. Install — установка зависимостей через npm ci
  2. Build — сборка VitePress документации
  3. Deploy — загрузка на Cloudflare Pages через Wrangler

Секреты для документации

СекретОписание
CF_PAGES_API_TOKENCloudflare API токен с правами на Pages (Edit)
CF_ACCOUNT_IDCloudflare Account ID

Создание Cloudflare API токена

  1. Перейдите на dash.cloudflare.com/profile/api-tokens
  2. Нажмите Create TokenCreate Custom Token
  3. Настройте права:
    • Permissions: AccountCloudflare PagesEdit
    • Account Resources: выберите ваш аккаунт
  4. Создайте токен и сохраните его в GitHub Secrets

URL документации

ВеткаCloudflare ProjectCloudflare URLCustom Domain
maininteg-admin-docsinteg-admin-docs.pages.devadmin.integ.docs.happ.tools
devdev-integ-admin-docsdev-integ-admin-docs.pages.devadmin.integ.docs.dev.happ.tools

Настройка Custom Domains

Custom domains настраиваются вручную в Cloudflare Dashboard:

  1. Перейдите в Workers & Pagesinteg-admin-docs
  2. Вкладка Custom domains
  3. Добавьте домены и привяжите к веткам

CI Pipeline

Файл: .github/workflows/ci.yml

Запускается при push в dev ветку и выполняет:

  1. Type Check — проверка TypeScript типов
  2. Lint — проверка ESLint
  3. Build — тестовая сборка production

Release Pipeline

Файл: .github/workflows/release.yml

Автоматически создаёт git теги при мерже release веток в main:

  • Формат ветки: release/1.2.3
  • Создаётся тег: v1.2.3

Локальная разработка документации

bash
# Запустить dev сервер
npm run docs:dev

# Собрать документацию
npm run docs:build

# Превью сборки
npm run docs:preview

Troubleshooting

Ошибка Wrangler Action

Error: The process 'npx' failed with exit code 1

Возможные причины:

  1. Неправильные или отсутствующие секреты
  2. API токен без нужных прав
  3. Проект не существует (создаётся автоматически при первом деплое)

Решение:

  • Проверьте секреты CF_PAGES_API_TOKEN и CF_ACCOUNT_ID
  • Убедитесь, что токен имеет права Cloudflare Pages: Edit

Документация не обновляется

Проверьте:

  • Изменения в папке docs/ закоммичены
  • Push в правильную ветку (main или dev)
  • Workflow запустился в GitHub Actions

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

SaaS Admin Documentation