Files
NeveTimePanel/CI_CD_README.md
arkonsadter e4bbf50725
Some checks failed
continuous-integration/drone/push Build encountered an error
fixed drone.yml
2026-01-18 19:48:21 +06:00

211 lines
6.1 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.
# MC Panel CI/CD Pipeline
## Обзор
Проект использует Drone CI для автоматизации сборки, тестирования и деплоя. Pipeline состоит из нескольких этапов:
1. **Code Quality** - проверка качества кода и безопасности
2. **Build Frontend** - сборка React приложения
3. **Build and Publish** - сборка и публикация Docker образа
4. **Deploy Staging** - автоматический деплой на staging (ветка develop)
5. **Deploy Production** - деплой на production (теги v*)
6. **Notify** - уведомления о результатах
## Структура Pipeline
### 1. Code Quality Pipeline
```yaml
Триггеры: push, pull_request
Шаги:
- python-lint: flake8, black, isort
- frontend-lint: TypeScript, ESLint
- python-tests: pytest с покрытием
- frontend-tests: Vitest/Jest
- python-security: safety, bandit
- frontend-security: npm audit
```
### 2. Build Frontend Pipeline
```yaml
Триггеры: push, tag (main/master/develop)
Зависимости: code-quality
Шаги:
- build-frontend: npm ci && npm run build
- save-frontend-artifacts: сохранение артефактов
```
### 3. Build and Publish Pipeline
```yaml
Триггеры: push, tag (main/master/develop)
Зависимости: code-quality, build-frontend
Шаги:
- build-and-push: Docker build и push в registry
- test-image: тестирование собранного образа
- scan-image: Trivy сканирование уязвимостей
```
### 4. Deploy Pipelines
```yaml
Staging:
Триггер: push в develop
Деплой: docker-compose.staging.yml
Production:
Триггер: tag v*
Деплой: docker-compose.prod.yml
```
## Настройка Secrets
В Drone необходимо настроить следующие секреты:
### Docker Registry
```
docker_username: логин для registry.nevetime.ru
docker_password: пароль для registry.nevetime.ru
```
### SSH для деплоя
```
staging_host: IP/домен staging сервера
staging_user: пользователь SSH
staging_ssh_key: приватный SSH ключ (base64)
production_host: IP/домен production сервера
production_user: пользователь SSH
production_ssh_key: приватный SSH ключ (base64)
```
### Уведомления
```
telegram_bot_token: токен Telegram бота
telegram_chat_id: ID чата для уведомлений
```
## Теги и версионирование
### Автоматические теги
- `latest` - последний коммит в main/master
- `develop` - последний коммит в develop
- `{commit-sha}` - короткий хеш коммита
### Релизные теги
- `v1.0.0` - семантическое версионирование
- `v1.0.0-rc.1` - release candidate
## Окружения
### Development
- Локальная разработка
- `docker-compose.yml`
### Staging
- Автоматический деплой из develop
- `docker-compose.staging.yml`
- URL: https://mc-panel-staging.nevetime.ru
### Production
- Деплой по тегам v*
- `docker-compose.prod.yml`
- URL: https://mc-panel.nevetime.ru
## Workflow
### Разработка новой функции
1. Создать ветку от develop: `git checkout -b feature/new-feature`
2. Разработать функцию
3. Создать Pull Request в develop
4. После прохождения CI и ревью - мерж в develop
5. Автоматический деплой на staging
### Релиз
1. Создать ветку release от develop: `git checkout -b release/v1.0.0`
2. Подготовить релиз (обновить версии, CHANGELOG)
3. Мерж в main и develop
4. Создать тег: `git tag v1.0.0`
5. Push тега: `git push origin v1.0.0`
6. Автоматический деплой на production
### Hotfix
1. Создать ветку от main: `git checkout -b hotfix/critical-fix`
2. Исправить проблему
3. Мерж в main и develop
4. Создать тег с патч-версией: `git tag v1.0.1`
5. Push тега для деплоя
## Мониторинг
### Логи сборки
```bash
# Просмотр логов в Drone UI
https://drone.nevetime.ru/your-org/mc-panel
# Локальные логи
docker-compose logs -f mc-panel
```
### Метрики
- Время сборки
- Размер образа
- Результаты тестов
- Покрытие кода
- Уязвимости безопасности
## Troubleshooting
### Сборка падает на frontend
```bash
# Проверить зависимости
cd frontend && npm audit
# Обновить зависимости
npm update
# Очистить кеш
npm ci --cache /tmp/empty-cache
```
### Сборка падает на backend
```bash
# Проверить requirements.txt
cd backend && pip check
# Обновить зависимости
pip-compile requirements.in
```
### Проблемы с Docker registry
```bash
# Проверить авторизацию
docker login registry.nevetime.ru
# Проверить образ
docker pull registry.nevetime.ru/mc-panel:latest
```
### Деплой не работает
```bash
# Проверить SSH подключение
ssh -i ~/.ssh/deploy_key user@server
# Проверить Docker на сервере
docker ps
docker-compose ps
```
## Оптимизация
### Ускорение сборки
- Использование кеша Docker слоев
- Параллельные шаги где возможно
- Оптимизация Dockerfile
### Уменьшение размера образа
- Multi-stage build
- Минимальные базовые образы
- Очистка кеша пакетных менеджеров
### Безопасность
- Регулярное сканирование уязвимостей
- Обновление базовых образов
- Ротация секретов