Some checks failed
continuous-integration/drone/push Build encountered an error
6.1 KiB
6.1 KiB
MC Panel CI/CD Pipeline
Обзор
Проект использует Drone CI для автоматизации сборки, тестирования и деплоя. Pipeline состоит из нескольких этапов:
- Code Quality - проверка качества кода и безопасности
- Build Frontend - сборка React приложения
- Build and Publish - сборка и публикация Docker образа
- Deploy Staging - автоматический деплой на staging (ветка develop)
- Deploy Production - деплой на production (теги v*)
- Notify - уведомления о результатах
Структура Pipeline
1. Code Quality Pipeline
Триггеры: 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
Триггеры: push, tag (main/master/develop)
Зависимости: code-quality
Шаги:
- build-frontend: npm ci && npm run build
- save-frontend-artifacts: сохранение артефактов
3. Build and Publish Pipeline
Триггеры: push, tag (main/master/develop)
Зависимости: code-quality, build-frontend
Шаги:
- build-and-push: Docker build и push в registry
- test-image: тестирование собранного образа
- scan-image: Trivy сканирование уязвимостей
4. Deploy Pipelines
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/masterdevelop- последний коммит в 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
Разработка новой функции
- Создать ветку от develop:
git checkout -b feature/new-feature - Разработать функцию
- Создать Pull Request в develop
- После прохождения CI и ревью - мерж в develop
- Автоматический деплой на staging
Релиз
- Создать ветку release от develop:
git checkout -b release/v1.0.0 - Подготовить релиз (обновить версии, CHANGELOG)
- Мерж в main и develop
- Создать тег:
git tag v1.0.0 - Push тега:
git push origin v1.0.0 - Автоматический деплой на production
Hotfix
- Создать ветку от main:
git checkout -b hotfix/critical-fix - Исправить проблему
- Мерж в main и develop
- Создать тег с патч-версией:
git tag v1.0.1 - Push тега для деплоя
Мониторинг
Логи сборки
# Просмотр логов в Drone UI
https://drone.nevetime.ru/your-org/mc-panel
# Локальные логи
docker-compose logs -f mc-panel
Метрики
- Время сборки
- Размер образа
- Результаты тестов
- Покрытие кода
- Уязвимости безопасности
Troubleshooting
Сборка падает на frontend
# Проверить зависимости
cd frontend && npm audit
# Обновить зависимости
npm update
# Очистить кеш
npm ci --cache /tmp/empty-cache
Сборка падает на backend
# Проверить requirements.txt
cd backend && pip check
# Обновить зависимости
pip-compile requirements.in
Проблемы с Docker registry
# Проверить авторизацию
docker login registry.nevetime.ru
# Проверить образ
docker pull registry.nevetime.ru/mc-panel:latest
Деплой не работает
# Проверить SSH подключение
ssh -i ~/.ssh/deploy_key user@server
# Проверить Docker на сервере
docker ps
docker-compose ps
Оптимизация
Ускорение сборки
- Использование кеша Docker слоев
- Параллельные шаги где возможно
- Оптимизация Dockerfile
Уменьшение размера образа
- Multi-stage build
- Минимальные базовые образы
- Очистка кеша пакетных менеджеров
Безопасность
- Регулярное сканирование уязвимостей
- Обновление базовых образов
- Ротация секретов