Непрерывная интеграция и непрерывная доставка (Continuous integration and continuous delivery, CI/CD) могут изменить способ выпуска ПО, но здесь важно разделить вымысел и реальность. Джейн Гролл, соучредитель и генеральный директор DevOps Institute приводит на портале Enterprisers Project мнения отраслевых экспертов которые развеивают распространенные мифы об этой технологии.

Конвейер CI/CD способен изменить процесс доставки ПО и усовершенствовать DevOps. Он помогает объединить команды разработчиков и операционные команды, автоматизируя процесс создания, тестирования и развертывания приложений. Существует много информации о том, как построить и оптимизировать конвейер CI/CD, но, к сожалению, существует и множество заблуждений. Понимание этих заблуждений поможет избежать ошибок и задержек. Например, одно из самых больших заблуждений заключается в том, что CI/CD — единый конвейер для всех продуктов или инструмент статичной автоматизации. Конечно, это не так. Для разных продуктов могут потребоваться разные уровни или способы автоматизации. В этом и заключается ценность построения CI/CD-конвейеров с использованием совместимых (и потенциально взаимозаменяемых) инструментов. Чтобы избежать путаницы или конфликтов, должна существовать архитектура с определенными стандартами или политиками.

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

Все определенные процессы являются CI/CD

«Распространенное заблуждение заключается в том, что непрерывная интеграция, которая является определенным процессом — это CI/CD. На самом деле CI/CD — это сквозной процесс, который автоматизирует доставку изменений кода пользователям. CI/CD начинается с фиксации или изменения кода в репозитории. Сервер CI упаковывает эту кодовую базу в артефакт, который тестируется, развертывается и становится доступным для пользователей через процесс CD. CI — это не то же самое, что CD. Мы сможем достичь потока DevOps только тогда, когда CI и CD встретятся. Настоящий конвейер CI/CD решает проблемы межфункциональной команды доставки, включая разработку, безопасность и эксплуатацию», — говорит менеджер по разработке ПО Vox Media Тиффани Джачжа.

DevOps — это и есть CI/CD

«Самое большое заблуждение относительно CI/CD заключается в том, что его путают с DevOps. Правда в том, что CI/CD является ключевым компонентом DevOps, но это не все. DevOps фокусируется на культуре и ответственности команды. Он подчеркивает необходимость того, чтобы каждый член команды принимал участие в выполнении задач. CI/CD обеспечивает эту культуру с помощью ПО и инструментов для автоматизации», — поясняет посол глобального сообщества DevOps Institute Дхирадж Наял.

Негибкость CI/CD

«Слишком часто к конвейеру CI/CD относятся так же, как к диаграммам Ганта: как было написано, так и будет. Часто предполагается, что для внесения изменений или исправлений потребуется время, необходимое для выполнения каждой автоматизированной операции. При этом истина, что вещи терпят неудачу, игнорируется. Сбои определенно случаются, иначе зачем нам тестирование? Часто некоторые разработчики игнорируют процедуры исправления дефектов и устранения сбоев, которые могут потребоваться для доставки функции, особенно когда управление дефектами не рассматривается как часть процесса CI/CD», — сказал инженер по продажам Everbridge Стивен Уолтерс.

Достаточно просто сказать «CI/CD» — и все сразу автоматизируется

«Самое большое заблуждение относительно CI/CD заключается в том, что реалии конвейера меняются при одном только упоминании CI/CD. Компании говорят, что внедрили CI/CD, тогда как процесс как был, так и остается ручным на каждом шагу. У каждого слова есть свое значение, а непрерывная интеграция и непрерывная доставка означают, что после завершения разработки продукта следующим шагом будет либо доставка продукта потребителю, либо возвращение в команду разработчиков для внесения исправлений. Хорошо иметь конвейеры интеграции и доставки, так как они могут увеличить скорость доставки для обеспечения ценности, но это не то же самое, что CI/CD», — поясняет технический руководитель Novetta Марк Питерс.

Он добавил, что если на конвейере присутствуют ручные шаги, проверка изменений и их одобрение перед тем, как двигаться дальше, то он перестает работать так, как ему положено — непрерывно. «Понимание рабочего процесса и сокращение узких мест может помочь автоматизировать некоторые практики. Если ваша ИТ-организация разрабатывает, затем передает команде интеграции, а команда интеграции развертывает и передает пользователю, это не CI/CD-конвейер независимо от того, насколько хорошо определены эти процессы», — добавил он.

Развертывание — самая важная цель

«Это заблуждение, что доведение кода до конца конвейера и его развертывание — самая важная цель. Конвейер может развернуть ваше ПО, и в итоге вы можете воскликнуть „Отлично, работа сделана!“ и упустить все ценные шаги, которые должны произойти до развертывания. На самом деле конвейер необходимо рассматривать в целом, поскольку он является воротами в производство. Хороший конвейер включает такие этапы, как тестирование и сканирование безопасности, которые требуют от разработчиков размышлений и планирования, чтобы обеспечить надежный контроль качества. Это поможет вам построить самый лучший конвейер. Не рассчитывайте, что ваш инструмент даст все ответы, важно помнить, что CI/CD — это набор принципов. Это способ работы. Инструменты существуют только для того, чтобы эти принципы могли работать. Чтобы придти к успеху, вам нужно в первую очередь помнить о важности принципов», — заключил главный инженер Catapult CX Крейг Кук.