Change drone.yml
This commit is contained in:
391
DRONE_SIMPLIFIED.md
Normal file
391
DRONE_SIMPLIFIED.md
Normal file
@@ -0,0 +1,391 @@
|
||||
# 🚀 Упрощённый 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
|
||||
**Статус:** УПРОЩЕНО ✅
|
||||
|
||||
**Меньше сложности - больше контроля!** 🚀
|
||||
|
||||
Reference in New Issue
Block a user