Среди тестировщиков и разработчиков система CI/CD набирает все большую популярность. Эта методика направлена автоматизацию тестирования, развертывания изменений. Она позволяет запускать различные разновидности тестов на каждом из этапов. Автоматическое тестирование дает возможность ускорить наладку рабочего ПО, организовать доступ к новому функционалу, ускоряет обратную связь.
Что такое CI CD?
Методика CI/CD – относительно новое решение в DevOps. Этот термин объединяет в себе два понятия два понятия:
- CI, то есть continuous integration, что переводится как непрерывная интеграция;
- CD, то есть continuous delivery, что означает непрерывное развертывание.
Методика CI/CD – практика DevOps, предполагающая объединение в единый процесс процедур по разработке, контролю качества, развертыванию приложений. Такая технология предполагает повышение удобства, а также уровня надежности при развертывании изменений в продукте или ПО. Основными целями этой методики является:
- Сведение к минимуму багов;
- Автоматизация развертывания в различных окружениях;
- Обеспечение последовательной и автоматизированной сборки, тестирования, упаковки и продукта.
Принципы CI/CD
Методика CI/CD работает на базе четырех основных принципов:
- Разделение зон ответственности. Участники команды разделяют между собой ответственность за разные стороны процесса создания или жизненного цикла продукты. Дизайнеры и разработчики создают бизнес-логику, продумывают пользовательские сценарии по взаимодействию с системой, DevOps-инженеры разрабатывают логистику кода, тестировщики создают приемочные тесты.
- Снижение рисков – каждая группа, участвующая в создании продукта, должна стремиться снизить риски, в процессе необходимо контролировать правильность бизнес-логистики, повышать качество обработки данных, обращать внимание на пользовательский опыт.
- Уменьшение цикла обратной связи. Клиент и разработчик стремятся к ускорению процесса взаимодействия для быстрого согласования правок и внесения изменений.
- Реализация среды. Этот принцип предполагает создание единого рабочего пространства, позволяющего использовать вспомогательные ветки, осуществлять контроль версий. После прохождения контроля модули переносятся в основную ветку проекта для завершения тестирования и сборке в единый продукт.
Процесс разработки по методике CI/CD
Методика CI/CD предполагает разделение разработки на 7 этапов:
- Создание кода – разработчиками пишутся модули кода и проводятся тестирования в ручном режиме. Готовые модули в главной ветке единого рабочего пространство объединяются с текущей версией продукта.
- Сборка – система контроля версий запускает автоматическую сборку и тестирование продукта. Триггер для команды по сборке может быть назначен индивидуально (по запросу, по расписанию и так далее).
- Ручное тестирование – после осуществления проверки CI-системой работоспособность тестовой версии кода проверяется в ручном режиме.
- Релиз – после завершения тестирования в ручном режиме вносятся правки, производится релиз версии кода для клиента.
- Развертывание предполагает публикацию рабочей версии продукта на production-серверах. Клиент получает возможность взаимодействия с продуктом, может изучить его функционал.
- Мониторинг работы и поддержка – после запуска в эксплуатацию производится проверка нормальности его функционирования, осуществляется контроль пользовательского опыта.
- Планирование – на основе полученного фидбека от пользователей формируется запрос на создание нового функционала, планируются доработки. В результате цикл замыкается, разработчик снова может приступать к написанию кода для внесения новых функций.
Плюсы и минусы CI/CD
Методология CI/CD имеет как свои сильные, так и слабые стороны. К ее плюсам принято относить:
- Ускорение обработки запросов клиентов, что позволяет сократить период введения нового необходимого функционала. Запуск обновления, как правило, занимает несколько дней или недель.
- Возможность организации проверки вариантов, оперативное тестирование позволяет разработчику выявлять бесперспективные варианты на начальных этапах.
Однако CI/CD имеет и существенный недостаток. Данная методика требует большого опыта и скоординированности действий от всех участников команды. В ином случае внедрение CI/CD приведет лишь к усложнению процесса разработки.