“CI/CD” означает непрерывную интеграцию и непрерывное развертывание (или непрерывную доставку). Это набор практик и методологий, используемых при разработке программного обеспечения для автоматизации процесса создания, тестирования и развертывания изменений программного обеспечения.
При использовании CI/CD разработчики часто, часто несколько раз в день, интегрируют изменения своего кода в общий репозиторий. Каждая интеграция запускает автоматизированный процесс сборки, в ходе которого компилируется код, разрешаются зависимости и выполняются тесты, чтобы убедиться, что изменения не создают никаких проблем.
После того, как код пройдет этапы сборки и тестирования, его можно автоматически развернуть в различных средах, таких как разработка, промежуточная или производственная среда. Это позволяет быстрее и надежнее выпускать версии программного обеспечения, поскольку снижает вероятность возникновения ошибок и обеспечивает быструю обратную связь и итерацию.
Для реализации CI/CD доступно несколько методов и инструментов:
-
Системы контроля версий: CI/CD опирается на надежную систему контроля версий (VCS), такую как Git, которая позволяет разработчикам эффективно управлять и отслеживать изменения в базе кода.
-
Непрерывная интеграция. Разработчики часто интегрируют изменения своего кода, обычно несколько раз в день, в общий репозиторий. Это запускает автоматический процесс сборки для компиляции кода, запуска тестов и раннего обнаружения проблем интеграции.
-
Автоматическое тестирование. Автоматизированные тесты играют решающую роль в конвейерах CI/CD. Модульные тесты, интеграционные тесты и другие типы тестов выполняются автоматически, чтобы гарантировать, что изменения кода не нарушат существующую функциональность.
-
Автоматизация сборки. Конвейеры CI/CD автоматизируют процесс сборки, который включает в себя компиляцию кода, разрешение зависимостей и создание развертываемых артефактов.
-
Непрерывное развертывание/доставка. Как только код пройдет этапы сборки и тестирования, его можно автоматически развернуть в различных средах, таких как разработка, промежуточная или производственная среда, на основе заранее определенных правил и конфигураций.
-
Инфраструктура как код. Инструменты «Инфраструктура как код» (IaC), такие как Terraform или CloudFormation, используются для определения и управления необходимыми ресурсами инфраструктуры, такими как серверы, базы данных и сети, как часть конвейеров CI/CD.
-
Непрерывный мониторинг: конвейеры CI/CD могут включать в себя механизмы мониторинга и оповещения для выявления проблем в режиме реального времени и предоставления обратной связи команде разработчиков.