Получи случайную криптовалюту за регистрацию!

В 1913 году Генри Форд впервые поставил сборку автомобиля на к | Mad Devs Channel

В 1913 году Генри Форд впервые поставил сборку автомобиля на конвейер, перевернув промышленность своего времени. Принцип действия CI/CD в чем-то похож на конвейер: методика выполняет интеграционную функцию, включая различные типы автоматических тестов на каждом этапе, с последующей доставкой и развёртыванием кода в готовый продукт для конечного пользователя.

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

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

Как обезопасить релиз?
В каких местах могут возникнуть проблемы?
Стоит понимать, что автоматические модульные тесты и единая среда лишь фиксируют результат выполнения кода в определенных условиях, позволяя избежать нарушения их целостности в будущем. Однако в ситуациях, требующих ввода данных человеком, автоматизация может быть нежелательной или невозможной. Например, мы никогда не сможем автоматизировать приложение, когда дело доходит до удобства использования.

Как предохраниться от логических ошибок функциональности и багов?
Чтобы полностью исключить ошибки при деплое стоит комбинированно подойти к каждой итерации разработки продукта, например:
После разработки новой фичи разработчик создает запрос на слияние ветки с новой функциональностью в основную ветвь приложения.
Тимлид проекта перед слиянием проверяет качество его кода и при возникновении проблем отправляет код на доработку.
После принятия запроса на слияние приложение проходит несколько этапов автоматического тестирования, анализа качества кода и разворачивается на нашем стейдж сервере.
QA специалист дополнительно проверяет всю функциональность приложения.
После одобрения клиентом всех правок приложение отправляется в релиз.

Что делать если критическая ошибка осталась незамеченной и попала в прод?
На этот случай вы можете воспользоваться системой тегирования версий и в случае возникновения критических ситуаций сможете моментально откатить изменения до предыдущего состояния.

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

Применяете ли вы в своей работе метод CI/CD? Расскажите в комментариях о своем опыте