# Drone CI/CD Setup Instructions ## 🚁 Настройка Drone Pipeline для Women's Safety Backend ### Предварительные требования 1. **Drone Server** - установлен и настроен 2. **Docker Registry** - для хранения образов 3. **Production Servers** - настроены для развертывания ### 1. Настройка Repository в Drone ```bash # Активация репозитория drone repo enable women-safety/backend # Настройка доверенного режима (для Docker) drone repo update --trusted women-safety/backend ``` ### 2. Настройка Secrets ```bash # Docker Registry drone secret add --repository women-safety/backend \ --name docker_username --data "your-docker-username" drone secret add --repository women-safety/backend \ --name docker_password --data "your-docker-password" # Production SSH drone secret add --repository women-safety/backend \ --name production_host --data "production.example.com" drone secret add --repository women-safety/backend \ --name production_user --data "deploy" drone secret add --repository women-safety/backend \ --name production_ssh_key --data @~/.ssh/id_rsa # Staging SSH drone secret add --repository women-safety/backend \ --name staging_host --data "staging.example.com" drone secret add --repository women-safety/backend \ --name staging_user --data "deploy" drone secret add --repository women-safety/backend \ --name staging_ssh_key --data @~/.ssh/id_rsa_staging # Notifications drone secret add --repository women-safety/backend \ --name slack_webhook --data "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK" ``` ### 3. Настройка Pipeline Triggers ```bash # Настройка cron для уязвимостей (каждую ночь в 2:00) drone cron add --repository women-safety/backend \ --name nightly-security-scan \ --expr "0 2 * * *" \ --branch main # Настройка cron для производительности (каждое воскресенье в 3:00) drone cron add --repository women-safety/backend \ --name weekly-performance-test \ --expr "0 3 * * 0" \ --branch main ``` ### 4. Workflow #### Development Workflow: ``` 1. Push to feature branch 2. ✅ Lint & Type Check 3. ✅ Unit Tests 4. ✅ Security Scan 5. ✅ Build Images 6. ✅ Integration Tests ``` #### Staging Deployment: ``` 1. Merge to 'develop' branch 2. ✅ Full Pipeline 3. 🚀 Auto-deploy to staging 4. 📱 Slack notification ``` #### Production Deployment: ``` 1. Merge to 'main' branch 2. ✅ Full Pipeline 3. ✅ Security & Performance validation 4. 🚀 Deploy to production 5. 📊 Health checks 6. 📱 Success notification ``` ### 5. Мониторинг Pipeline #### Dashboard URLs: - **Drone UI**: `https://drone.example.com/women-safety/backend` - **Build Status**: `https://drone.example.com/api/badges/women-safety/backend/status.svg` #### CLI Commands: ```bash # Просмотр статуса drone build ls women-safety/backend # Логи последнего build drone build logs women-safety/backend # Перезапуск build drone build restart women-safety/backend 123 # Промотирование в продакшен drone build promote women-safety/backend 123 production ``` ### 6. Troubleshooting #### Общие проблемы: 1. **Build fails на этапе Docker push:** ```bash # Проверить Docker credentials drone secret ls women-safety/backend ``` 2. **SSH Connection Failed:** ```bash # Проверить SSH ключи drone secret update --repository women-safety/backend \ --name production_ssh_key --data @~/.ssh/id_rsa ``` 3. **Integration tests timeout:** ```bash # Увеличить timeout в .drone.yml # Или проверить ресурсы на build сервере ``` ### 7. Performance Tuning #### Pipeline Optimization: ```yaml # Параллельные этапы depends_on: [setup] # Кэширование volumes: - name: cache host: path: /tmp/cache ``` #### Resource Limits: ```yaml # Настройка ресурсов для тяжелых задач environment: DOCKER_BUILDKIT: 1 ``` ### 8. Security Best Practices 1. **Secrets Management:** - Никогда не коммитить секреты - Использовать Drone secrets для всех чувствительных данных - Регулярно ротировать ключи 2. **Image Security:** - Сканирование образов с Trivy - Использование minimal base images - Регулярные обновления зависимостей 3. **Network Security:** - VPN для production deployments - Firewall rules для Drone server - SSL/TLS для всех соединений ### 9. Backup & Recovery ```bash # Backup Drone database drone backup # Restore configuration drone restore backup-file.tar.gz ``` --- ## 📞 Support - **Documentation**: [Drone Docs](https://docs.drone.io/) - **Community**: [Drone Community](https://discourse.drone.io/) - **Issues**: Create issue в репозитории проекта