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

6.1 KiB
Raw Blame History

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

Триггеры: 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/master
  • develop - последний коммит в develop
  • {commit-sha} - короткий хеш коммита

Релизные теги

  • v1.0.0 - семантическое версионирование
  • v1.0.0-rc.1 - release candidate

Окружения

Development

  • Локальная разработка
  • docker-compose.yml

Staging

Production

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 тега для деплоя

Мониторинг

Логи сборки

# Просмотр логов в 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
  • Минимальные базовые образы
  • Очистка кеша пакетных менеджеров

Безопасность

  • Регулярное сканирование уязвимостей
  • Обновление базовых образов
  • Ротация секретов