9.4 KiB
🚀 Упрощённый Drone CI/CD
Дата: 15 января 2026
Статус: УПРОЩЕНО ✅
🎯 Что изменилось
До изменения
4 пайплайна:
- code-quality - Проверка качества кода
- build-and-publish - Сборка и публикация образа
- deploy-staging - Деплой на staging
- deploy-production - Деплой на production
Уведомления:
- notify-success - Уведомление об успешной сборке
- notify-failure - Уведомление об ошибке
- notify-production-deploy - Уведомление о деплое
После изменения
2 пайплайна:
- code-quality - Проверка качества кода
- build-and-publish - Сборка и публикация образа
Уведомления: Удалены
Деплой пайплайны: Удалены
📋 Оставшиеся пайплайны
1. code-quality
Назначение: Проверка качества и безопасности кода
Триггеры:
- Push в любую ветку
- Pull Request
Шаги:
-
python-lint - Проверка Python кода
- flake8 (синтаксис и стиль)
- pylint (качество кода)
- black (форматирование)
- isort (сортировка импортов)
-
frontend-lint - Проверка JavaScript/React кода
- ESLint (синтаксис и стиль)
- Prettier (форматирование)
-
python-security - Проверка безопасности Python
- safety (известные уязвимости)
- bandit (security linter)
-
frontend-security - Проверка безопасности Node.js
- npm audit (уязвимости зависимостей)
2. build-and-publish
Назначение: Сборка и публикация Docker образа
Триггеры:
- Push в ветки: main, master, develop
- Push тега
Зависимости:
- Запускается только после успешного code-quality
Шаги:
-
build-and-push - Сборка и публикация образа
- Сборка Docker образа
- Публикация в registry
- Автоматическое тегирование
-
scan-image - Сканирование на уязвимости
- Trivy сканирование
- Проверка HIGH и CRITICAL уязвимостей
🗑️ Удалённые пайплайны
deploy-staging
Причина удаления: Упрощение конфигурации
Что делал:
- SSH подключение к staging серверу
- Обновление Docker образа
- Перезапуск контейнеров
Альтернатива: Ручной деплой через SSH
deploy-production
Причина удаления: Упрощение конфигурации
Что делал:
- SSH подключение к production серверу
- Обновление Docker образа
- Перезапуск контейнеров
- Уведомление в Slack
Альтернатива: Ручной деплой через SSH
🗑️ Удалённые уведомления
notify-success
Что делал: Отправка уведомления в Slack об успешной сборке
notify-failure
Что делал: Отправка уведомления в Slack об ошибке сборки
notify-production-deploy
Что делал: Отправка уведомления в Slack о деплое на production
Причина удаления: Упрощение, не требуется настройка Slack webhook
🔧 Настройка
Необходимые Drone Secrets
Для работы оставшихся пайплайнов нужны только:
# Docker Registry
docker_username=your_username
docker_password=your_password
Удалённые Secrets (больше не нужны)
# Slack (удалено)
slack_webhook
# SSH для staging (удалено)
staging_host
staging_username
staging_ssh_key
# SSH для production (удалено)
production_host
production_username
production_ssh_key
🚀 Как использовать
Автоматическая проверка кода
При каждом push или pull request:
git add .
git commit -m "Update code"
git push origin main
Результат:
- ✅ Запускается code-quality
- ✅ Проверяется качество кода
- ✅ Проверяется безопасность
- ✅ Если всё ОК → запускается build-and-publish
- ✅ Собирается Docker образ
- ✅ Публикуется в registry
- ✅ Сканируется на уязвимости
Ручной деплой на staging
# SSH на staging сервер
ssh user@staging-server
# Обновление
cd /opt/mc-panel
docker-compose pull
docker-compose up -d
docker-compose ps
Ручной деплой на production
# SSH на production сервер
ssh user@production-server
# Обновление
cd /opt/mc-panel
docker-compose pull
docker-compose up -d
docker-compose ps
📊 Сравнение
До упрощения
Push → code-quality → build-and-publish → deploy-staging
↓
notify-success
↓
notify-failure
Tag → code-quality → build-and-publish → deploy-production
↓
notify-production-deploy
Требуется:
- 7 Drone secrets
- Настройка Slack
- Настройка SSH для 2 серверов
После упрощения
Push → code-quality → build-and-publish
Tag → code-quality → build-and-publish
Требуется:
- 2 Drone secrets (docker_username, docker_password)
- Ручной деплой через SSH
✅ Преимущества упрощения
Меньше настроек
- ❌ Не нужен Slack webhook
- ❌ Не нужны SSH ключи
- ❌ Не нужны настройки серверов
- ✅ Только Docker registry
Больше контроля
- ✅ Ручной деплой = больше контроля
- ✅ Можно проверить перед деплоем
- ✅ Можно откатить если нужно
Проще поддержка
- ✅ Меньше кода
- ✅ Меньше зависимостей
- ✅ Проще понять
- ✅ Проще отладить
🔄 Workflow
Разработка
# 1. Разработка
git checkout -b feature/new-feature
# ... код ...
git commit -m "Add new feature"
git push origin feature/new-feature
# 2. Pull Request
# Создать PR на GitHub/GitLab
# Drone автоматически проверит код
# 3. Merge
# После одобрения PR
git checkout main
git merge feature/new-feature
git push origin main
# 4. Автоматическая сборка
# Drone соберёт и опубликует образ
# 5. Ручной деплой
ssh user@server
cd /opt/mc-panel
docker-compose pull
docker-compose up -d
Production Release
# 1. Создать тег
git tag -a v1.1.0 -m "Release 1.1.0"
git push origin v1.1.0
# 2. Автоматическая сборка
# Drone соберёт образ с тегом v1.1.0
# 3. Ручной деплой на production
ssh user@production-server
cd /opt/mc-panel
docker-compose pull
docker-compose up -d
docker-compose ps
📝 Файл .drone.yml
Структура
---
# Пайплайн 1: Проверка качества
kind: pipeline
name: code-quality
trigger: push, pull_request
steps:
- python-lint
- frontend-lint
- python-security
- frontend-security
---
# Пайплайн 2: Сборка и публикация
kind: pipeline
name: build-and-publish
trigger: push (main/master/develop), tag
depends_on: code-quality
steps:
- build-and-push
- scan-image
Размер файла
До: ~300 строк
После: ~120 строк
Уменьшение: 60%
🎯 Итог
Конфигурация упрощена! ✅
Что осталось:
- ✅ Проверка качества кода
- ✅ Проверка безопасности
- ✅ Сборка Docker образа
- ✅ Публикация в registry
- ✅ Сканирование на уязвимости
Что удалено:
- ❌ Автоматический деплой
- ❌ Уведомления в Slack
- ❌ SSH настройки
Результат:
- 🎯 Проще настроить
- 🎯 Проще поддерживать
- 🎯 Больше контроля над деплоем
- 🎯 Меньше зависимостей
Версия: 1.1.0
Дата: 15 января 2026
Статус: УПРОЩЕНО ✅
Меньше сложности - больше контроля! 🚀