← Назад к базе знаний

CI/CD — непрерывная сборка и поставка

CI/CD — непрерывная сборка и поставка

Суть. Изменения попадают в общую ветку часто и небольшими порциями, каждое автоматически собирается и проверяется, а готовая версия в любой момент может быть выпущена. Ценность не в скорости самой по себе, а в размере изменения: маленькое изменение легче проверить и дешевле откатить.

Три ступени

Ступень Что происходит автоматически Что остаётся человеку
Непрерывная сборка Сборка и тесты при каждом изменении Решение о выпуске и сам выпуск
Непрерывная поставка Плюс подготовка готовой к выпуску версии Нажатие кнопки выпуска
Непрерывное развёртывание Плюс выпуск в рабочую среду Наблюдение и откат при проблемах

Что нужно, чтобы это работало

  • Тесты, которым доверяют: падающий конвейер должен означать реальную проблему, а не «опять моргнуло»
  • Быстрая сборка: больше пятнадцати минут — и люди начинают обходить процесс
  • Одинаковые среды: то, что собрано, должно вести себя одинаково в проверке и в работе
  • Возможность отката за минуты, а не за часы

Когда применять

Как только над кодом работают больше двух человек или выпуск делается чаще раза в месяц. До этого автоматизация не окупается; после — ручная сборка становится главным источником ошибок и задержек.

Два разных механизма

Непрерывная интеграция Непрерывная поставка
Что делает Собирает и проверяет каждое изменение Готовит и выкатывает сборку в среды
Главная ценность Конфликты и поломки видны за минуты, а не за недели Выпуск перестаёт быть событием
Что нужно Автотесты и одна общая ветка Одинаковые среды и обратимость выкатки
Признак, что не работает Сборка «красная» дольше часа и это норма Выкатка требует ручных шагов по инструкции

Правила, без которых конвейер мешает

  1. Основная ветка всегда рабочая. Сломанная сборка — задача номер один для всех, а не «поправим потом».
  2. Быстрая обратная связь: базовая проверка укладывается в десять минут, длинные тесты выносятся в отдельный этап.
  3. Одна и та же сборка проходит все среды. Пересборка под каждую среду обесценивает всё тестирование.
  4. Секреты и параметры — снаружи сборки, иначе она перестаёт быть переносимой и становится небезопасной.
  5. Откат проверяется так же регулярно, как выкатка. Невоспроизведённый откат не существует.

Что измерять

Четыре показателя из метрик DORA: частота выпусков, срок от коммита до продуктива, доля неудачных изменений и время восстановления. Они показывают, приносит ли конвейер пользу, тогда как «число сборок в день» не показывает ничего.

Где ломается

Конвейер без тестов. Автоматизирована доставка, но не проверка — тогда быстрее доставляются и дефекты.

Нестабильные тесты. Один падающий через раз тест приучает команду перезапускать сборку не глядя, и настоящие падения перестают замечать.

Ветки живут неделями. Смысл теряется: слияние снова становится событием, к которому готовятся.

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

Частые вопросы

С чего начать, если ничего нет
Со сборки и запуска тестов на каждое изменение. Автоматическую выкатку добавляют вторым шагом, когда сборке уже доверяют.
Обязательно ли выкатывать автоматически в продуктив
Нет. Достаточно, чтобы сборка была готова к выкатке в любой момент, а решение о моменте принимал человек. Это уже даёт основной эффект.
Что делать с длинными тестами
Разделить на уровни: быстрые на каждое изменение, полные — по расписанию и перед выпуском. Попытка прогнать всё каждый раз убивает скорость.

Связанное

Материал оказался полезным?