Деплой
Проект использует GitHub Actions для автоматического деплоя приложения и документации.
Окружения
| Окружение | Ветка | URL приложения | URL документации |
|---|---|---|---|
| Production | main | Docker на сервере | admin.integ.docs.happ.tools |
| Development | dev | Docker на сервере | 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]- Build — собирается Docker образ с Doppler для секретов
- Push — образ загружается в GitHub Container Registry
- Deploy — через SSH обновляется контейнер на сервере
Секреты для деплоя приложения
| Секрет | Описание |
|---|---|
DEV_DOPPLER_TOKEN | Doppler токен для dev окружения |
PROD_DOPPLER_TOKEN | Doppler токен для production |
DEV_INTEG_SSH_HOST | SSH хост dev сервера |
DEV_INTEG_SSH_USER | SSH пользователь |
DEV_INTEG_SSH_KEY | SSH приватный ключ |
PROD_INTEG_SSH_HOST | SSH хост prod сервера |
PROD_INTEG_SSH_USER | SSH пользователь |
PROD_INTEG_SSH_KEY | SSH приватный ключ |
GHCR_PAT | GitHub 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]- Install — установка зависимостей через
npm ci - Build — сборка VitePress документации
- Deploy — загрузка на Cloudflare Pages через Wrangler
Секреты для документации
| Секрет | Описание |
|---|---|
CF_PAGES_API_TOKEN | Cloudflare API токен с правами на Pages (Edit) |
CF_ACCOUNT_ID | Cloudflare Account ID |
Создание Cloudflare API токена
- Перейдите на dash.cloudflare.com/profile/api-tokens
- Нажмите Create Token → Create Custom Token
- Настройте права:
- Permissions:
Account→Cloudflare Pages→Edit - Account Resources: выберите ваш аккаунт
- Permissions:
- Создайте токен и сохраните его в GitHub Secrets
URL документации
| Ветка | Cloudflare Project | Cloudflare URL | Custom Domain |
|---|---|---|---|
main | integ-admin-docs | integ-admin-docs.pages.dev | admin.integ.docs.happ.tools |
dev | dev-integ-admin-docs | dev-integ-admin-docs.pages.dev | admin.integ.docs.dev.happ.tools |
Настройка Custom Domains
Custom domains настраиваются вручную в Cloudflare Dashboard:
- Перейдите в Workers & Pages → integ-admin-docs
- Вкладка Custom domains
- Добавьте домены и привяжите к веткам
CI Pipeline
Файл: .github/workflows/ci.yml
Запускается при push в dev ветку и выполняет:
- Type Check — проверка TypeScript типов
- Lint — проверка ESLint
- 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:previewTroubleshooting
Ошибка Wrangler Action
Error: The process 'npx' failed with exit code 1Возможные причины:
- Неправильные или отсутствующие секреты
- API токен без нужных прав
- Проект не существует (создаётся автоматически при первом деплое)
Решение:
- Проверьте секреты
CF_PAGES_API_TOKENиCF_ACCOUNT_ID - Убедитесь, что токен имеет права
Cloudflare Pages: Edit
Документация не обновляется
Проверьте:
- Изменения в папке
docs/закоммичены - Push в правильную ветку (
mainилиdev) - Workflow запустился в GitHub Actions
Следующие шаги
- Начало работы — настройка локального окружения
- Архитектура — структура проекта
- Качество кода — линтеры и форматирование