fixed drone.yml
Some checks failed
continuous-integration/drone/push Build encountered an error

This commit is contained in:
2026-01-18 19:48:21 +06:00
parent 0ed8039644
commit e4bbf50725
13 changed files with 1099 additions and 119 deletions

211
CI_CD_README.md Normal file
View File

@@ -0,0 +1,211 @@
# 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
- Минимальные базовые образы
- Очистка кеша пакетных менеджеров
### Безопасность
- Регулярное сканирование уязвимостей
- Обновление базовых образов
- Ротация секретов