diff --git a/DEPLOYMENT-README.md b/DEPLOYMENT-README.md deleted file mode 100644 index 5d30bec..0000000 --- a/DEPLOYMENT-README.md +++ /dev/null @@ -1,238 +0,0 @@ -# 🚀 Автоматическое развертывание на тестовом сервере - -## Обзор - -Этот репозиторий содержит 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) для подробной конфигурации. diff --git a/QUICK-START.md b/QUICK-START.md deleted file mode 100644 index 508d9ea..0000000 --- a/QUICK-START.md +++ /dev/null @@ -1,178 +0,0 @@ -# Quick Start Guide для GitHub Actions Deploy - -## 🚀 Быстрая настройка - -### 1. Настройка тестового сервера - -Запустите на своем тестовом сервере: - -```bash -# Скачать и запустить скрипт настройки -curl -sSL https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_REPO/main/scripts/setup-testing-server.sh | bash -``` - -Или вручную: - -```bash -git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git -cd YOUR_REPO -./scripts/setup-testing-server.sh -``` - -### 2. Настройка SSH ключей - -На тестовом сервере добавьте свой публичный SSH ключ: - -```bash -# Генерация нового SSH ключа (если нужно) -ssh-keygen -t ed25519 -C "github-actions@yourdomain.com" -f ~/.ssh/github_actions - -# Добавление публичного ключа на сервер -sudo -u deploy tee -a /home/deploy/.ssh/authorized_keys < ~/.ssh/github_actions.pub -``` - -### 3. Настройка GitHub Secrets - -В настройках GitHub репозитория (Settings → Secrets and variables → Actions) добавьте: - -**Required Secrets:** - -``` -TESTING_SERVER_HOST=your.server.ip.address -TESTING_SERVER_USER=deploy -TESTING_SERVER_SSH_KEY=-----BEGIN OPENSSH PRIVATE KEY----- -your private key content here ------END OPENSSH PRIVATE KEY----- -TESTING_DB_ROOT_PASSWORD=your_strong_root_password -TESTING_DB_USERNAME=app_user -TESTING_DB_PASSWORD=your_strong_user_password -``` - -**Optional Variables:** - -``` -TESTING_BASE_PORT=3000 -TESTING_BASE_DB_PORT=3300 -TESTING_BASE_REDIS_PORT=6300 -``` - -### 4. Тестирование - -1. Создайте новую ветку и сделайте изменения -2. Создайте Pull Request в ветку `develop` -3. GitHub Actions автоматически развернет приложение -4. Проверьте комментарий в PR с информацией о развертывании - -## 📝 Полезные команды на сервере - -```bash -# Мониторинг всех развертываний -sudo /usr/local/bin/monitor-deployments - -# Очистка старых развертываний -sudo /usr/local/bin/cleanup-old-deployments - -# Просмотр логов конкретного PR -cd /opt/low-code-engine/testing-pr-123 -docker-compose logs -f app - -# Проверка статуса контейнеров -docker-compose ps - -# Запуск миграций вручную -docker-compose exec app yarn migration:run -``` - -## 🔧 Troubleshooting - -### Проблема: "Permission denied" при SSH подключении - -```bash -# На сервере проверьте права доступа -sudo ls -la /home/deploy/.ssh/ -sudo cat /home/deploy/.ssh/authorized_keys - -# Права должны быть: -# drwx------ deploy deploy .ssh/ -# -rw------- deploy deploy authorized_keys -``` - -### Проблема: Порт уже занят - -```bash -# Найти процесс использующий порт -sudo netstat -tulpn | grep :3123 - -# Остановить все контейнеры для PR -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 -``` - -### Проблема: База данных не запускается - -```bash -# Проверить логи MariaDB -docker-compose logs mariadb - -# Пересоздать контейнер базы данных -docker-compose down -docker-compose up -d mariadb -``` - -## 🌐 Доступ к приложениям - -### По портам (прямой доступ): - -- Приложение: `http://YOUR_SERVER_IP:3000{PR_NUMBER}` -- База данных: `YOUR_SERVER_IP:3300{PR_NUMBER}` -- Redis: `YOUR_SERVER_IP:6300{PR_NUMBER}` - -### Через домены (если настроен Nginx): - -- Приложение: `http://pr-{PR_NUMBER}.testing.yourdomain.com` - -Пример для PR #123: - -- Приложение: `http://your.server.ip:3123` или `http://pr-123.testing.yourdomain.com` -- База данных: `your.server.ip:3423` -- Redis: `your.server.ip:6423` - -## 📊 Мониторинг - -Проверить статус всех развертываний: - -```bash -sudo /usr/local/bin/monitor-deployments -``` - -Вывод будет примерно таким: - -``` -=== 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 - -Docker Usage: -TYPE TOTAL ACTIVE SIZE RECLAIMABLE -Images 15 8 2.5GB 1.2GB (48%) -Containers 16 8 150MB 80MB (53%) -```