Деплой
Проект использует GitHub Actions для автоматического деплоя приложения и документации.
Окружения
| Окружение | Ветка | URL приложения | URL документации |
|---|---|---|---|
| Production | main | admin.happ.tools | docs.happ.tools |
| Development | dev | admin.dev.happ.tools | docs.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 (
ghcr.io/happ-ai/saas-admin) - Deploy — через SSH обновляется контейнер на сервере
Секреты для деплоя приложения
| Секрет | Описание |
|---|---|
DEV_DOPPLER_TOKEN | Doppler токен для dev окружения |
PROD_DOPPLER_TOKEN | Doppler токен для production |
DEV_SSH_HOST | SSH хост dev сервера |
DEV_SSH_USER | SSH пользователь |
DEV_SSH_KEY | SSH приватный ключ |
PROD_SSH_HOST | SSH хост prod сервера |
PROD_SSH_USER | SSH пользователь |
PROD_SSH_KEY | SSH приватный ключ |
GHCR_PAT | GitHub Personal Access Token для Container Registry |
Деплой документации
Документация доступна на docs.happ.tools.
Триггеры
- Push в ветки
mainилиdev - Изменения в папке
docs/**
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
npm run docs:dev # Запустить dev сервер
npm run docs:build # Собрать документацию
npm run docs:preview # Превью сборкиTroubleshooting
Build падает при деплое
bash
npm run build:prod
npm run typecheck
npm run lint:checkДокументация не обновляется
- Изменения в папке
docs/закоммичены - Push в правильную ветку (
mainилиdev) - Workflow запустился в GitHub Actions
Следующие шаги
- Начало работы — настройка локального окружения
- Архитектура — структура проекта
- Качество кода — линтеры и форматирование