CI/CD позволяет лучшим технологическим компаниям улучшать свою продукцию много раз в день. Вот что вам нужно знать, чтобы сделать то же самое.
Что такое CI/CD?
CI/CD — это способ разработки программного обеспечения, в котором вы можете выпускать обновления в любое время устойчивым образом. При изменении кода является обычным делом циклы разработки более часты, значимы и быстрее.
«CI/CD» означает комбинированные практики непрерывной интеграции (CI) и непрерывной доставки (CD).
Непрерывная интеграция является обязательным условием для CI/CD и требует:
- Разработчики, чтобы объединить свои изменения в основной филиал кода много раз в день.
- Каждый код объединяется, чтобы запустить автоматическую сборку кода и последовательность тестирования. Разработчики в идеале получают результаты менее чем за 10 минут, чтобы они могли сосредоточиться на своей работе.
Работа непрерывной интеграции заключается в создании артефакта, который можно развернуть. Роль автоматических тестов в CI состоит в том, чтобы убедиться, что артефакт для данной версии кода безопасен для развертывания.
В практике Непрерывная доставка Изменения кода также постоянно развернуты, хотя развертывание запускается вручную. Если весь процесс перемещения кода от хранилища источника к производству полностью автоматизирован, процесс называется Непрерывное развертывание Анкет
Длительный процесс развертывания подвержен ошибкам и отвлекает. Разработчики расстроены процессом, который ощущается как избыток. Команды торгуют небольшими итерациями для рискованных выпусков Big-Bang. Они также могут быть приведены, чтобы вообще не делать небольших улучшений.
Цель CI/CD — сделать развертывание достаточно легким, безопасным и быстрым. В таком контексте вероятность введения основных ошибок низкая. Когда происходит что -то плохое, легко доставить исправление или вернуть изменения.
Лакмусовый тест для выполнения CI/CD
Если какой -либо разработчик в вашей команде может прекратить то, что они делают прямо сейчас, и отправить текущую версию кода разработки на производство за 20 минут или меньше, и никто не подчеркивает, что может произойти — поздравляю, вы делаете CI/CD!
Принципы CI/CD
Непрерывная практика доставки делает CI дальше, описывая принципы успешного развертывания производства:
- Архитектор системы таким образом, чтобы поддержать итеративные выпуски Анкет Избегайте тесной связи между компонентами. Реализуйте метрики, которые помогают обнаружить проблемы в режиме реального времени.
- Всегда держите код в развертываемом состоянии Анкет Поддерживайте комплексный и здоровый автоматизированный тестовый набор. Стройте мониторинг, регистрацию и сбои с помощью дизайна.
- Работать в небольших итерациях Анкет Например, если вы разрабатываете в филиалах функций, они должны жить не более дня. Если вам нужно больше времени для разработки новых функций, используйте флаги функций.
- Разработчики могут Подтолкнуть код в производственные условия для постановки . Это гарантирует, что новая версия программного обеспечения будет работать, когда оно попадет в руки пользователей.
- Любой может развернуть любую версию программного обеспечения в любую среду по требованию, нажав кнопку . Если вам нужно проконсультироваться с вики о том, как развернуться, это игра.
- Если вы построите его, вы запускаете это Анкет Автономные инженерные команды должны нести ответственность за качество и стабильность программного обеспечения, которое они создают. Это разрушает бункеры между традиционными разработчиками и операционными группами, поскольку они работают вместе для достижения целей высокого уровня.
Чтобы сделать CI/CD реальностью, вам нужно автоматизировать все, что вы можете в процессе доставки программного обеспечения и запустить его в CI/CD Pipeline Анкет
Пример рабочих процессов CI/CD
Вот простой пример полностью автоматизированного конвейера CI/CD (непрерывного развертывания). Ничто не должно быть более сложным, чем необходимо!
В этом примере каждое изменение в отделении Master GIT выполняет следующие шаги на Семфор :
- Создайте код и веб -активы при повторном использовании кэша зависимостей.
- Запустите автоматический тестовый набор. Это приложение JavaScript/node.js, поэтому тесты написаны с шутками.
- Если тесты проходят, развертывает блок обновления производственного кода, который работает в облаке.
CI/CD с ручными шагами
Вот рабочий процесс CI/CD для контейнеров и Kubernetes, который включает в себя больше шагов:
В этом примере каждое изменение автоматически выполняет эти шаги:
- Создайте приложение из исходного кода и зависимостей.
- Запустите автоматический тестовый набор.
- Если тесты проходят, автоматически создайте изображение контейнера Docker и выложите его в частный реестр.
В конце конвейера Docker Build у нас есть рабочий артефакт, изображение контейнера. Разработчик, или, более формально, менеджер релиза, может решить вручную триггер:
- Развертывание для постановки или производства, которые могут включать тесты на дым, чтобы проверить никаких серьезных проблем.
- Метка изображения контейнера как артефакт, который был представлен для производства, для включения аудитов и откатов.
Хочу больше? Прочитайте о преимуществах CI/CD и о том, как выглядит типичное путешествие по усыновлению, в том числе, когда это кажется невозможным — на сайте Semaphore Анкет
Оригинал: «https://dev.to/semaphore/ci-cd-continuous-integration-delivery-explained-75l»