392 lines
9.4 KiB
Markdown
392 lines
9.4 KiB
Markdown
# 🚀 Упрощённый 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
|
||
|
||
Для работы оставшихся пайплайнов нужны только:
|
||
|
||
```bash
|
||
# Docker Registry
|
||
docker_username=your_username
|
||
docker_password=your_password
|
||
```
|
||
|
||
### Удалённые Secrets (больше не нужны)
|
||
|
||
```bash
|
||
# Slack (удалено)
|
||
slack_webhook
|
||
|
||
# SSH для staging (удалено)
|
||
staging_host
|
||
staging_username
|
||
staging_ssh_key
|
||
|
||
# SSH для production (удалено)
|
||
production_host
|
||
production_username
|
||
production_ssh_key
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Как использовать
|
||
|
||
### Автоматическая проверка кода
|
||
|
||
При каждом push или pull request:
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
# SSH на staging сервер
|
||
ssh user@staging-server
|
||
|
||
# Обновление
|
||
cd /opt/mc-panel
|
||
docker-compose pull
|
||
docker-compose up -d
|
||
docker-compose ps
|
||
```
|
||
|
||
---
|
||
|
||
### Ручной деплой на production
|
||
|
||
```bash
|
||
# 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
|
||
|
||
### Разработка
|
||
|
||
```bash
|
||
# 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
|
||
|
||
```bash
|
||
# 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
|
||
|
||
### Структура
|
||
|
||
```yaml
|
||
---
|
||
# Пайплайн 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
|
||
**Статус:** УПРОЩЕНО ✅
|
||
|
||
**Меньше сложности - больше контроля!** 🚀
|
||
|