Files
few-line-engine/DEPLOYMENT-README.md
lborv 41f1c402ed feat: Add test deployment workflow and setup documentation
- Implemented a new GitHub Actions workflow for testing deployments (`test-deployment.yml`).
- Created detailed deployment documentation (`DEPLOYMENT-README.md`, `DEPLOYMENT.md`, `QUICK-START.md`) for setting up the testing server and configuring GitHub secrets.
- Added a setup script (`setup-testing-server.sh`) for automating the environment setup on the testing server, including Docker, Nginx, and user configurations.
- Included monitoring and cleanup scripts for managing deployments on the server.
2025-10-13 20:59:12 +03:00

239 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Автоматическое развертывание на тестовом сервере
## Обзор
Этот репозиторий содержит GitHub Actions workflow для автоматического развертывания приложения на тестовом сервере при создании Pull Request в ветку `develop`. Каждый PR получает свою изолированную среду тестирования.
## 📁 Структура файлов
```
.github/workflows/
├── deploy-testing.yml # Основной workflow для развертывания
└── test-deployment.yml # Workflow для тестирования развертывания
scripts/
└── setup-testing-server.sh # Скрипт настройки тестового сервера
DEPLOYMENT.md # Подробная документация по настройке
QUICK-START.md # Быстрый старт
.env.testing.example # Пример переменных окружения
```
## ⚡ Быстрый старт
### 1. Настройте тестовый сервер
```bash
# На вашем тестовом сервере выполните:
curl -sSL https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_REPO/main/scripts/setup-testing-server.sh | bash
```
### 2. Добавьте GitHub Secrets
В настройках репозитория добавьте следующие секреты:
```
TESTING_SERVER_HOST=your.server.ip.address
TESTING_SERVER_USER=deploy
TESTING_SERVER_SSH_KEY=-----BEGIN OPENSSH PRIVATE KEY-----
your private SSH key content
-----END OPENSSH PRIVATE KEY-----
TESTING_DB_ROOT_PASSWORD=strong_root_password
TESTING_DB_USERNAME=app_user
TESTING_DB_PASSWORD=strong_user_password
```
### 3. Создайте Pull Request
1. Создайте новую ветку от `develop`
2. Внесите изменения
3. Создайте Pull Request в ветку `develop`
4. GitHub Actions автоматически развернет ваше приложение
5. Проверьте комментарий в PR с ссылкой на развертывание
## 🏗️ Как это работает
### Workflow процесс
1. **Триггер**: Pull Request в ветку `develop`
2. **Сборка**: Установка зависимостей, линтинг, сборка приложения
3. **Docker**: Создание Docker образа
4. **Развертывание**: Копирование файлов на сервер и запуск контейнеров
5. **Проверка**: Health check и уведомление в PR
6. **Очистка**: Автоматическая очистка при закрытии PR
### Архитектура развертывания
```
Тестовый сервер
├── /opt/low-code-engine/
│ ├── testing-pr-123/ # Изолированная среда для PR #123
│ │ ├── docker-compose.yml
│ │ ├── docker-compose.override.yml
│ │ ├── .env
│ │ └── docker/
│ ├── testing-pr-124/ # Изолированная среда для PR #124
│ └── ...
└── Порты:
├── Приложение: 3000 + PR_NUMBER
├── База данных: 3300 + PR_NUMBER
└── Redis: 6300 + PR_NUMBER
```
## 🔧 Конфигурация
### Порты по умолчанию
- **Приложение**: 3000 + номер PR (например, PR #123 → порт 3123)
- **База данных**: 3300 + номер PR (например, PR #123 → порт 3423)
- **Redis**: 6300 + номер PR (например, PR #123 → порт 6423)
### Переменные окружения
Можно настроить базовые порты через GitHub Variables:
```
TESTING_BASE_PORT=3000 # Базовый порт приложения
TESTING_BASE_DB_PORT=3300 # Базовый порт БД
TESTING_BASE_REDIS_PORT=6300 # Базовый порт Redis
```
## 📊 Мониторинг
### Команды на сервере
```bash
# Мониторинг всех развертываний
sudo /usr/local/bin/monitor-deployments
# Очистка старых развертываний (старше 7 дней)
sudo /usr/local/bin/cleanup-old-deployments
# Просмотр логов конкретного PR
cd /opt/low-code-engine/testing-pr-123
docker-compose logs -f app
# Проверка статуса
docker-compose ps
```
### Пример вывода мониторинга
```
=== Testing Deployments Status ===
Date: Mon Oct 13 10:30:00 UTC 2025
Active Deployments:
PR #123: Running on port 3123
Status: ✅ Healthy
PR #124: Running on port 3124
Status: ❌ Unhealthy
=== System Resources ===
Disk Usage:
/dev/sda1 20G 8.5G 11G 45% /opt/low-code-engine
```
## 🔒 Безопасность
### Рекомендации
1. **SSH ключи**: Используйте отдельный SSH ключ только для развертывания
2. **Пользователь**: Создайте отдельного пользователя `deploy` с минимальными правами
3. **Firewall**: Настройте фаервол для ограничения доступа
4. **Пароли**: Используйте сильные пароли для базы данных
5. **Автоочистка**: Включена автоматическая очистка старых развертываний
### Настройка firewall
```bash
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3000:3999/tcp # Порты приложений
sudo ufw allow 3300:3999/tcp # Порты БД
sudo ufw allow 6300:6999/tcp # Порты Redis
```
## 🧪 Тестирование
### Тестирование самого процесса развертывания
Запустите тестовый workflow вручную:
1. Перейдите в Actions → Test Deployment Workflow
2. Нажмите "Run workflow"
3. Укажите номер PR для симуляции (например, 999)
4. Запустите тест
### Локальное тестирование
```bash
# Сборка и тест Docker образа локально
docker build -t low-code-engine:local .
docker run -d --name test-app -p 3000:3000 low-code-engine:local
# Проверка health endpoint
curl http://localhost:3000/health
# Очистка
docker stop test-app && docker rm test-app
```
## 📚 Дополнительная документация
- [DEPLOYMENT.md](./DEPLOYMENT.md) - Подробная документация по настройке
- [QUICK-START.md](./QUICK-START.md) - Краткое руководство по быстрому старту
- [.env.testing.example](./.env.testing.example) - Пример переменных окружения
## 🛠️ Troubleshooting
### Часто встречающиеся проблемы
#### "Permission denied" при SSH
```bash
# Проверьте права на сервере
sudo ls -la /home/deploy/.ssh/
sudo chmod 700 /home/deploy/.ssh/
sudo chmod 600 /home/deploy/.ssh/authorized_keys
```
#### Порт уже занят
```bash
# Найдите процесс
sudo netstat -tulpn | grep :3123
# Остановите развертывание
cd /opt/low-code-engine/testing-pr-123
docker-compose down
```
#### Нехватка места на диске
```bash
# Очистка Docker
docker system prune -a -f
# Очистка старых развертываний
sudo /usr/local/bin/cleanup-old-deployments
```
## 🤝 Вклад в развитие
1. Создайте форк репозитория
2. Создайте ветку для новой функции
3. Внесите изменения
4. Создайте Pull Request
5. Протестируйте развертывание
## 📝 Лицензия
Этот проект использует лицензию, указанную в основном проекте.
---
💡 **Совет**: Начните с [QUICK-START.md](./QUICK-START.md) для быстрой настройки, затем обратитесь к [DEPLOYMENT.md](./DEPLOYMENT.md) для подробной конфигурации.