CI/CD pipeline
Some checks reported errors
continuous-integration/drone Build encountered an error

This commit is contained in:
2025-09-25 08:42:22 +09:00
parent cf26eba8e3
commit 003950dce6
11 changed files with 1561 additions and 1 deletions

148
README.md
View File

@@ -139,4 +139,150 @@ alembic upgrade head
- Кэширование критических данных
- Асинхронная обработка
- Circuit breaker pattern
- Health checks и service discovery
- Health checks и service discovery
## 🚁 CI/CD - Drone Pipeline
[![Drone Build Status](https://drone.example.com/api/badges/women-safety/backend/status.svg)](https://drone.example.com/women-safety/backend)
Автоматизированный pipeline с полным циклом разработки, тестирования и развертывания:
### 🔄 Этапы Pipeline:
#### 1. **Code Quality** 🧹
```yaml
steps:
- name: lint
commands:
- black --check .
- flake8 .
- isort --check-only .
- mypy services/ --ignore-missing-imports
```
#### 2. **Security Scanning** 🛡️
```yaml
steps:
- name: security
commands:
- safety check --json
- bandit -r services/ -f json
- trivy image scan
```
#### 3. **Testing** 🧪
- **Unit Tests**: pytest с coverage отчетами
- **Integration Tests**: Реальные сервисы в Docker
- **Load Testing**: K6 performance тесты
- **Security Tests**: OWASP ZAP сканирование
#### 4. **Docker Build** 🐳
Параллельная сборка всех 6 микросервисов:
- `women-safety/user-service`
- `women-safety/emergency-service`
- `women-safety/location-service`
- `women-safety/calendar-service`
- `women-safety/notification-service`
- `women-safety/api-gateway`
#### 5. **Deployment** 🚀
- **Staging**: Автоматическое развертывание из `develop`
- **Production**: Развертывание из `main` с подтверждением
- **Rollback**: Автоматический откат при ошибках
### 📋 Drone Configuration
**Основной Pipeline** (`.drone.yml`):
```yaml
kind: pipeline
name: women-safety-backend
steps:
- name: setup
image: python:3.11-slim
commands:
- pip install -r requirements.txt
- name: test
depends_on: [setup]
commands:
- pytest --cov=services --cov-report=xml
- name: build-services
depends_on: [test]
image: plugins/docker
settings:
repo: women-safety/${SERVICE}
tags: [latest, ${DRONE_COMMIT_SHA:0:7}]
- name: deploy-production
depends_on: [integration-test]
when:
branch: [main]
event: [push]
```
**Vulnerability Scanning** (Nightly):
```yaml
kind: pipeline
name: vulnerability-scan
trigger:
cron: [nightly]
steps:
- name: trivy-scan
image: aquasec/trivy:latest
commands:
- trivy image women-safety/user-service:latest
```
**Performance Testing** (Weekly):
```yaml
kind: pipeline
name: performance-test
trigger:
cron: [weekly]
steps:
- name: load-test
image: loadimpact/k6:latest
commands:
- k6 run tests/performance/load-test.js
```
### 🔧 Настройка Secrets
```bash
# Docker Registry
drone secret add --repository women-safety/backend --name docker_username --data username
drone secret add --repository women-safety/backend --name docker_password --data password
# Production SSH
drone secret add --repository women-safety/backend --name production_host --data server.example.com
drone secret add --repository women-safety/backend --name production_ssh_key --data @~/.ssh/id_rsa
# Notifications
drone secret add --repository women-safety/backend --name slack_webhook --data https://hooks.slack.com/...
```
### 📊 Мониторинг Pipeline
- **Build Status**: Real-time статус в Slack/Teams
- **Performance Metrics**: Автоматические отчеты по производительности
- **Security Reports**: Еженедельные отчеты по уязвимостям
- **Deployment Logs**: Centralized логирование развертываний
### 🏃‍♂️ Быстрый старт с Drone
```bash
# Установка Drone CLI
curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone
# Настройка
export DRONE_SERVER=https://drone.example.com
export DRONE_TOKEN=your-token
# Запуск build
drone build promote women-safety/backend 123 production
```