Процесс CI / CD
В этой статье рассмотрим что такое Continuous Integration, Continuous Delivery и Continuous Deployment, их основные принципы, а так же какую пользу они приносят при разработке.
CI/CD включает в себя непрерывную сборку, тестирование и развертывание изменений кода на каждой маленькой итерации. Непрерывные методологии разработки программного обеспечения основаны на автоматизации выполнения сценариев, что бы ускорить процесс разработки и тестирования, а так же минимизировать вероятность появления ошибок. Они требуют меньшего вмешательства человека с момента внедрения нового кода в проект до его развертывания на продакшене.
Continuous Integration это процесс регулярного обновления кода, при котором для внедрения любого изменения в приложение автоматически создается билд и запускаются тесты, тем самым обеспечивая соответствие нового функционала всем стандартам, установленным для Вашего приложения, а так же гарантирует, что новые изменения не повлияли на существующий функционал.
Continuous Delivery — это процесс, в результате которого проект собирается и тестируется автоматически, а следом и деплоится, но уже по требованию инженеров. Этот метод гарантирует, что код проверяется автоматически, но требует вмешательства человека, чтобы вручную инициировать развертывание изменений.
Continuous Deployment — отличается от Continuous Delivery тем, что для развертывания проекта не требуется вмешательство человека, то-есть этот процесс происходит тоже автоматически.
CI/CD хорошо подходит для software разработки, когда в проект по несколько раз в день вносятся изменения и зачастую одновременно разрабатывается сразу несколько частей. Таким образом стадии сборки, тестирования и развертывания проекта должны быть максимально быстрыми.
Главные цели CI/CD
- Свести к минимуму ошибки
- Ускорить сборку, тестирование и развертывание проекта
- Повысить качество конечного продукта
Инструменты CI/CD
1. Jenkins — инструмент для CI с открытым исходным кодом, написанный на Java. Он позволяет автоматически тестировать сборки проекта в режиме реального времени, быстро находить и исправлять дефекты, а так же собирать информацию по отдельным изменениям.
2. Buddy — это интеллектуальный инструмент CI / CD для веб-разработчиков, предназначенный для снижения порога входа в DevOps. Он использует конвейеры доставки для создания, тестирования и развертывания программного обеспечения.
3. TeamCity — сервер непрерывной интеграции, который поддерживает множество мощных функций: настройка сборки в DSL, комплексная интеграция VCS, отчет о прогрессе сборки на лету, удаленный запуск и т.д.