This commit is contained in:
148
README.md
148
README.md
@@ -139,4 +139,150 @@ alembic upgrade head
|
||||
- Кэширование критических данных
|
||||
- Асинхронная обработка
|
||||
- Circuit breaker pattern
|
||||
- Health checks и service discovery
|
||||
- Health checks и service discovery
|
||||
|
||||
## 🚁 CI/CD - Drone Pipeline
|
||||
|
||||
[](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
|
||||
```
|
||||
Reference in New Issue
Block a user