ci/cd
CI/CD (Continuous Integration/Continuous Delivery или Continuous Deployment) — это набор практик, автоматизирующих процесс выпуска программного обеспечения.
CI/CD конвейеры автоматизируют этапы разработки программного обеспечения, от интеграции кода до развертывания. Continuous Integration фокусируется на частом слиянии изменений кода в центральный репозиторий, после чего выполняются автоматизированные сборки и тесты. Continuous Delivery расширяет CI, автоматизируя процесс выпуска в промежуточную среду, в то время как Continuous Deployment автоматически выпускает изменения в production, если все тесты пройдены. Это позволяет осуществлять более быстрые и надежные выпуски программного обеспечения.
graph LR
Center["ci/cd"]:::main
Rel_automation["automation"]:::related -.-> Center
click Rel_automation "/terms/automation"
Rel_cicd_pipeline["cicd-pipeline"]:::related -.-> Center
click Rel_cicd_pipeline "/terms/cicd-pipeline"
Rel_continuous_delivery["continuous-delivery"]:::related -.-> Center
click Rel_continuous_delivery "/terms/continuous-delivery"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Проверка знаний
🧒 Простыми словами
CI/CD — это как супербыстрый автоматический способ обновлять ваши любимые приложения. Вместо того чтобы долго ждать больших обновлений, мелкие изменения постоянно проверяются и добавляются, поэтому у вас всегда есть последние улучшения.
🤓 Expert Deep Dive
CI/CD представляет собой парадигму гибкой и бережливой разработки программного обеспечения, ориентированную на быстрые циклы обратной связи и итеративную доставку. С точки зрения системного подхода, это трансформирует жизненный цикл программного обеспечения в высокоавтоматизированный, наблюдаемый и отказоустойчивый процесс. Непрерывная интеграция (Continuous Integration) фокусируется на поддержании здоровой кодовой базы за счет частых слияний и автоматизированной проверки, снижая риски, связанные с долгоживущими ветками функций и сложными этапами интеграции. Непрерывная доставка (Continuous Delivery) обеспечивает готовность к развертыванию, автоматизируя конвейер выпуска до момента развертывания в производственной среде, что позволяет принимать решения о выпуске, управляемые бизнесом. Непрерывное развертывание (Continuous Deployment) автоматизирует последний этап, обеспечивая практически мгновенную доставку ценности. Ключевые архитектурные соображения включают надежные стратегии контроля версий, эффективные пирамиды автоматизированного тестирования, управление артефактами и автоматизацию инфраструктуры. Компромиссы включают первоначальные затраты на настройку, необходимость зрелой культуры тестирования и потенциальное увеличение операционной сложности при неправильном управлении. Уязвимости могут возникнуть из-за недостаточного покрытия тестами, небезопасных конфигураций конвейера или недостаточного мониторинга.