Files
NeveTimePanel/DRONE_SIMPLIFIED.md
2026-01-15 19:25:42 +06:00

9.4 KiB
Raw Blame History

🚀 Упрощённый Drone CI/CD

Дата: 15 января 2026
Статус: УПРОЩЕНО


🎯 Что изменилось

До изменения

4 пайплайна:

  1. code-quality - Проверка качества кода
  2. build-and-publish - Сборка и публикация образа
  3. deploy-staging - Деплой на staging
  4. deploy-production - Деплой на production

Уведомления:

  • notify-success - Уведомление об успешной сборке
  • notify-failure - Уведомление об ошибке
  • notify-production-deploy - Уведомление о деплое

После изменения

2 пайплайна:

  1. code-quality - Проверка качества кода
  2. build-and-publish - Сборка и публикация образа

Уведомления: Удалены

Деплой пайплайны: Удалены


📋 Оставшиеся пайплайны

1. code-quality

Назначение: Проверка качества и безопасности кода

Триггеры:

  • Push в любую ветку
  • Pull Request

Шаги:

  1. python-lint - Проверка Python кода

    • flake8 (синтаксис и стиль)
    • pylint (качество кода)
    • black (форматирование)
    • isort (сортировка импортов)
  2. frontend-lint - Проверка JavaScript/React кода

    • ESLint (синтаксис и стиль)
    • Prettier (форматирование)
  3. python-security - Проверка безопасности Python

    • safety (известные уязвимости)
    • bandit (security linter)
  4. frontend-security - Проверка безопасности Node.js

    • npm audit (уязвимости зависимостей)

2. build-and-publish

Назначение: Сборка и публикация Docker образа

Триггеры:

  • Push в ветки: main, master, develop
  • Push тега

Зависимости:

  • Запускается только после успешного code-quality

Шаги:

  1. build-and-push - Сборка и публикация образа

    • Сборка Docker образа
    • Публикация в registry
    • Автоматическое тегирование
  2. 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

Результат:

  1. Запускается code-quality
  2. Проверяется качество кода
  3. Проверяется безопасность
  4. Если всё ОК → запускается build-and-publish
  5. Собирается Docker образ
  6. Публикуется в registry
  7. Сканируется на уязвимости

Ручной деплой на 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
Статус: УПРОЩЕНО

Меньше сложности - больше контроля! 🚀