Попробовать бесплатно
AgileПроцессКачествоАвтоматизация

Непрерывная интеграция (CI)

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

КРАТКО
Непрерывная интеграция снимает боль, знакомую по проектам с длинными ветками: две недели все пишут по отдельности, а потом неделю сводят результат. При CI изменения вливаются в общую ветку минимум раз в день, каждое вливание запускает сборку и тесты, а сломанная сборка чинится в первую очередь. Термин появился у Грейди Буча в книге 1991 года, практикой его сделало экстремальное программирование, а массовым — статья Мартина Фаулера 2000 года.
СИНОНИМЫ:непрерывная интеграцияCIcontinuous integrationпостоянная интеграцияавтосборка

Стоимость слияния растёт нелинейно. Два дня расхождения сводятся за полчаса, две недели — за неделю, и половина этой недели уходит на разбор конфликтов, смысл которых уже никто не помнит. CI держит расхождение маленьким принудительно.

Из чего состоит

  • Единый репозиторий, где лежит всё нужное для сборки.
  • Сборка запускается одной командой и не требует ручных шагов.
  • Каждое вливание в основную ветку запускает сборку и автотесты.
  • Результат сборки виден всей команде.
  • Сломанная сборка чинится раньше любой другой работы.

Последний пункт отличает работающий CI от установленного сервера сборки. Красная сборка, которую все привыкли игнорировать, обходится дороже её отсутствия: она приучает не смотреть на сигнал.

Границы термина

CI отвечает за то, что изменения собираются и проходят проверки. За подготовку версии к выкату отвечает непрерывная поставка, за автоматический выкат в промышленную среду — непрерывное развёртывание. Три практики часто называют одной аббревиатурой, хотя внедряют их по очереди.

КОГДА ПРИМЕНЯТЬ
  • Над кодом работает больше одного человека
  • Слияния регулярно превращаются в отдельный проект
  • Есть автотесты или их можно написать хотя бы на ключевые сценарии
КОГДА НЕ СТОИТ
  • Разработчик один и ветка одна: пользы от практики почти нет
  • Сборка идёт часами и вердикт приходит на следующий день — сначала чинят время сборки
ПРИМЕР

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

КАК ИСПОЛЬЗОВАТЬ В SHTAB

Первым делом измерьте время от коммита до вердикта. Пока оно больше десяти минут, разработчики перестают ждать результат и уходят к следующей задаче, и смысл быстрой обратной связи теряется. Разбор красных сборок удобно вести обычными задачами в Shtab: у поломки появляется ответственный и срок, и она перестаёт висеть «на команде».

Попробовать бесплатно

Вопросы про «Непрерывная интеграция (CI)»

Интеграция доводит изменения до состояния «собирается и проходит тесты». Поставка добавляет автоматическую подготовку версии к выкату на любую среду, а решение о выкате остаётся за человеком. Непрерывное развёртывание убирает и это решение.

Применяйте термины на практике

База знаний, задачи и цели — в одном сервисе. Бесплатно — без лимита по числу людей.