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;

      

🧠 Проверка знаний

1 / 3

🧒 Простыми словами

CI/CD — это как супербыстрый автоматический способ обновлять ваши любимые приложения. Вместо того чтобы долго ждать больших обновлений, мелкие изменения постоянно проверяются и добавляются, поэтому у вас всегда есть последние улучшения.

🤓 Expert Deep Dive

CI/CD представляет собой парадигму гибкой и бережливой разработки программного обеспечения, ориентированную на быстрые циклы обратной связи и итеративную доставку. С точки зрения системного подхода, это трансформирует жизненный цикл программного обеспечения в высокоавтоматизированный, наблюдаемый и отказоустойчивый процесс. Непрерывная интеграция (Continuous Integration) фокусируется на поддержании здоровой кодовой базы за счет частых слияний и автоматизированной проверки, снижая риски, связанные с долгоживущими ветками функций и сложными этапами интеграции. Непрерывная доставка (Continuous Delivery) обеспечивает готовность к развертыванию, автоматизируя конвейер выпуска до момента развертывания в производственной среде, что позволяет принимать решения о выпуске, управляемые бизнесом. Непрерывное развертывание (Continuous Deployment) автоматизирует последний этап, обеспечивая практически мгновенную доставку ценности. Ключевые архитектурные соображения включают надежные стратегии контроля версий, эффективные пирамиды автоматизированного тестирования, управление артефактами и автоматизацию инфраструктуры. Компромиссы включают первоначальные затраты на настройку, необходимость зрелой культуры тестирования и потенциальное увеличение операционной сложности при неправильном управлении. Уязвимости могут возникнуть из-за недостаточного покрытия тестами, небезопасных конфигураций конвейера или недостаточного мониторинга.

📚 Источники