# Drone 1.x+ Pipeline Configuration ## πŸ“‹ ΠžΠ±Π·ΠΎΡ€ Pipeline Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ с Drone 0.8 Π½Π° соврСмСнный Drone 1.x+ синтаксис. Новая конфигурация прСдоставляСт: - βœ… Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис Drone 1.x+ - πŸš€ 10 шагов CI/CD pipeline - πŸ”— ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ шагами - 🎯 УсловноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ - 🐳 Docker-in-Docker для сборки ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ## πŸ”„ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ измСнСния ΠΎΡ‚ Drone 0.8 ### Новая структура ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ```yaml # Drone 1.x+ синтаксис kind: pipeline type: docker name: quiz-bot-ci-cd trigger: {...} services: [...] steps: [...] ``` ### Services (Π±Ρ‹Π»ΠΎ services:) ```yaml # Drone 1.x+ - массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² services: - name: docker image: docker:27-dind privileged: true command: [...] environment: {...} ``` ### Steps (Π±Ρ‹Π»ΠΎ pipeline:) ```yaml # Drone 1.x+ - массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² со структурированными зависимостями steps: - name: step_name image: image_name commands: [...] depends_on: [...] when: {...} ``` ## 🎯 Trigger Configuration АвтоматичСский запуск pipeline ΠΏΡ€ΠΈ: - **Branches**: `main`, `develop`, `feature/*` - **Events**: `push`, `pull_request` ## πŸš€ Pipeline Steps ### 1. **prepare** - ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° - ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сборкС - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Git вСрсии ### 2. **lint** - Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° - Black (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) - isort (сортировка ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²) - flake8 (Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³) ### 3. **test** - ВСстированиС - pytest тСсты - Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты ### 4. **security** - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ - safety (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° зависимостСй) - bandit (Π°Π½Π°Π»ΠΈΠ· бСзопасности) ### 5. **typecheck** - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² - mypy статичСский Π°Π½Π°Π»ΠΈΠ· ### 6. **docker_build** - Π‘Π±ΠΎΡ€ΠΊΠ° Docker - Π‘Π±ΠΎΡ€ΠΊΠ° ΠΎΠ±Ρ€Π°Π·Π° quiz-bot - Π’Π΅Π³ΠΈ: `${DRONE_COMMIT_SHA}`, `latest` - **УсловиС**: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ `main`, `develop` ### 7. **docker_test** - ВСстированиС Docker - ВСст ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ - **Зависит ΠΎΡ‚**: `docker_build` - **УсловиС**: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ `main`, `develop` ### 8. **quality** - ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ΄Π° - radon (ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ слоТности) ### 9. **deploy** - Π”Π΅ΠΏΠ»ΠΎΠΉ - Π’Π΅Π³ ΠΎΠ±Ρ€Π°Π·Π° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° - **Зависит ΠΎΡ‚**: `docker_test`, `quality` - **УсловиС**: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ `main` + `push` ### 10. **notify** - УвСдомлСния - Π‘Π²ΠΎΠ΄ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² pipeline - ВыполняСтся всСгда (success/failure) ## πŸ”§ Services Configuration ### Docker-in-Docker Service ```yaml services: - name: docker image: docker:27-dind privileged: true command: - --host=tcp://0.0.0.0:2375 environment: DOCKER_TLS_CERTDIR: "" ``` ## πŸ”— Dependencies Flow ``` prepare β†’ lint β†’ quality β†˜ β†’ test β†’ deploy β†’ notify β†’ security β†— β†’ typecheck β†’ docker_build β†’ docker_test ``` ## 🌍 Environment Variables ### Drone Built-in Variables - `${DRONE_BRANCH}` - ВСкущая Π²Π΅Ρ‚ΠΊΠ° - `${DRONE_COMMIT_SHA}` - SHA ΠΊΠΎΠΌΠΌΠΈΡ‚Π° - `${DRONE_COMMIT_AUTHOR}` - Автор ΠΊΠΎΠΌΠΌΠΈΡ‚Π° - `${DRONE_BUILD_NUMBER}` - НомСр сборки - `${DRONE_BUILD_STATUS}` - Бтатус сборки - `${DRONE_BUILD_STARTED}` - ВрСмя Π½Π°Ρ‡Π°Π»Π° ### Docker Connection - `DOCKER_HOST: tcp://docker:2375` - ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Docker service - `DOCKER_TLS_CERTDIR: ""` - ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TLS для локального Docker ## 🎯 Conditional Execution ### Branch Conditions - **docker_build/docker_test**: `main`, `develop` Π²Π΅Ρ‚ΠΊΠΈ - **deploy**: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ `main` Π²Π΅Ρ‚ΠΊΠ° ### Event Conditions - **deploy**: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ `push` events (Π½Π΅ pull_request) ### Status Conditions - **notify**: success ΠΈΠ»ΠΈ failure ## πŸ’‘ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ### Shell Compatibility ```bash # БСзопасная Π·Π°ΠΌΠ΅Π½Π° ${VAR:0:8} для BusyBox ash echo "πŸ“ Commit: $(echo ${DRONE_COMMIT_SHA} | cut -c1-8)" ``` ### Error Handling - ИспользованиС `|| true` для Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ - Graceful degradation ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ### Images Optimization - `docker:27-cli` вмСсто `docker:27` (мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€) - Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹Π΅ вСрсии Python ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ## βœ… ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Pipeline ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию: - βœ… YAML синтаксис ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ - βœ… 10 шагов ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСны - βœ… Зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ шагами ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ - βœ… Условия выполнСния установлСны - βœ… Docker-in-Docker сконфигурирован - βœ… Environment ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ настроСны ## πŸš€ Π“ΠΎΡ‚ΠΎΠ² ΠΊ запуску ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстима с Drone 1.x+ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ!