Непрерывная интеграция и непрерывное развертывание (СD/CI)

В контексте современных методов разработки и DevOps часто используются аббревиатуры CI и CD. CI означает непрерывную интеграцию, а CD - непрерывное развертывание (или непрерывную поставку).

Непрерывная интеграция - это фундаментальная рекомендация DevOps, согласно которой разработчики должны регулярно проводить слияние изменений кода в центральном репозитории, где выполняются автоматизированные сборки и тесты. Разработчики, применяющие непрерывную интеграцию, при каждой возможности выполняют слияние своих изменений с основной веткой. Изменения, внесенные разработчиком, проверяются путем создания сборки и запуска автоматических тестов на этой сборке. При использовании непрерывной интеграции уделяется большое внимание автоматизации тестирования, в результате которого при интеграции новых коммитов в основную ветку работа приложения не нарушается.

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

Таким образом, непрерывная интеграция является частью как непрерывной поставки, так и непрерывного развертывания. А непрерывное развертывание похоже на непрерывную поставку, за исключением того, что релизы выполняются автоматически.

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

Ирина Батова
Ирина Батова
Студент Российского университета дружбы народов

Мои интересы в науке - математика, программирование, химия.