Главная · Статьи · Что такое CI/CD

Что такое CI/CD простыми словами: пайплайн, стенды и релизы

Вячеслав Степанов Вячеслав Степанов — проджект-менеджер, ментор ·

«Пайплайн красный», «уже на тесте, ждём смоук», «релиз готов, нажмём после обеда» — так команда говорит о том, где сейчас находится код. Проджекту эти слова нужны, чтобы планировать релизы и понимать, почему готовая задача ещё не у пользователей. Ниже — что такое CI/CD, из каких шагов состоит пайплайн, что такое стенды, чем две «CD» отличаются друг от друга и как проджект использует всё это в работе. Видео-версия — мой открытый урок, где пайплайн запускаем своими руками.

Как ваш код попадает на сервер: CI/CD и Git для всех | Урок 20

Если видео не открывается — смотри на YouTube (может понадобиться VPN).

Содержание
  1. Что такое CI/CD
  2. CI: проверка каждого изменения
  3. Пайплайн по шагам
  4. Стенды: где живёт продукт
  5. Delivery и Deployment: две «CD»
  6. Откат: если релиз сломался
  7. Зачем CI/CD проджект-менеджеру
  8. Типичные ошибки
  9. Частые вопросы

Что такое CI/CD

CI/CD — набор практик и инструментов, которые автоматизируют путь кода от разработчика до пользователей. Между «разработчик дописал код» и «пользователь увидел новую кнопку» стоит конвейер: робот проверяет изменение, собирает продукт и раскладывает его по серверам.

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

Без такого конвейера разработчики неделями копили изменения в своих ветках, потом пытались собрать всё вместе — и проект надолго ломался. С CI/CD ошибка видна через несколько минут после того, как её внесли.

CI: проверка каждого изменения

Continuous Integration — непрерывная интеграция. Термин впервые использовал инженер Грэди Буч в 1991 году, а широко известным он стал благодаря экстремальному программированию и статье Мартина Фаулера «Continuous Integration» (2000). Идея простая: вливать изменения в общий код часто и каждый раз автоматически проверять, что ничего не сломалось.

В CI обычно входят две проверки. Проверка стиля кода (линтер) смотрит, всё ли оформлено по правилам команды. Юнит-тесты проверяют отдельные функции: подали значения на вход — сверили результат. Если хоть одна проверка упала, изменение помечается красным крестом и дальше не идёт, пока разработчик его не исправит.

Пайплайн по шагам

Схема пайплайна: коммит, стиль кода и тесты в зоне CI; сборка, выкладка на тест и смоук в зоне CD; выкатка на прод по кнопке
Типичный пайплайн. Шаги и их названия в разных командах немного отличаются, принцип один.

Пайплайн (pipeline, конвейер) — настроенная цепочка шагов, которую робот проходит с каждым изменением. Два шага требуют пояснения. На сборке продукт обычно упаковывают в Docker-образ — «контейнер», который одинаково запускается на любом сервере. Смоук (дымовой тест) — быстрая проверка, что продукт вообще поднялся и главные экраны открываются; название пришло из электроники: включили плату — дыма нет, можно проверять дальше.

Пайплайны настраивают в специальных инструментах: GitLab CI, GitHub Actions, Jenkins, TeamCity. Проджекту не нужно их настраивать — достаточно уметь открыть пайплайн своей задачи и увидеть, на каком шаге она стоит.

Стенды: где живёт продукт

Схема: три стенда — LOCAL на ноутбуке разработчика, TEST для тестировщика, PROD для реальных пользователей
Код проходит стенды по порядку, и на каждом цена ошибки выше.

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

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

Хочешь запустить свой первый пайплайн?
На менторстве ты проходишь путь разработчика в тренажёре: ветка, коммит, красная проверка, исправление, merge request и зелёный пайплайн — прямо в браузере, без установки программ. Начни с бесплатной консультации.

Записаться на бесплатную консультацию

Delivery и Deployment: две «CD»

Схема: при Continuous Delivery готовый релиз выкатывает человек кнопкой, при Continuous Deployment он уходит на прод сам
Всё отличие — в последнем шаге.

Буквы CD расшифровывают двумя способами, и это частый вопрос на собеседовании. Подход Continuous Delivery подробно описали Джез Хамбл и Дэвид Фарли в одноимённой книге 2010 года: продукт в любой момент готов к выкатке, а решение о ней принимают люди.

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

Откат: если релиз сломался

Откат (rollback) — возврат продукта к предыдущей рабочей версии. Это самое быстрое лечение неудачного релиза: сначала вернуть пользователям работающий продукт, потом спокойно разбираться в причине. Хороший CI/CD делает откат таким же простым, как выкатку, — одной кнопкой.

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

Зачем CI/CD проджект-менеджеру

Типичные ошибки

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

Что такое CI/CD простыми словами?

Автоматический конвейер, который проводит каждое изменение кода от разработчика до серверов: проверяет, что ничего не сломано, собирает продукт и выкладывает его на нужный стенд.

Чем CI отличается от CD?

CI проверяет каждое изменение кода: стиль и тесты. CD берёт проверенный код, собирает продукт и доставляет его на тестовый стенд и дальше на прод.

Чем Continuous Delivery отличается от Continuous Deployment?

При Continuous Delivery готовый релиз выкатывает на прод человек нажатием кнопки. При Continuous Deployment релиз после успешных проверок уходит на прод автоматически.

Что такое пайплайн?

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

Зачем CI/CD проджект-менеджеру?

Чтобы понимать, где задача на самом деле, видеть блокеры вроде красного пайплайна, планировать релизы и заранее готовить план отката.

Читайте также
  1. Что такое Git простыми словами
  2. HTTP-коды ошибок: шпаргалка
  3. Что такое API простыми словами

Хочешь разбираться в технике на уровне работающего проджекта?
В моём Telegram-канале — разборы реальных собеседований, вопросы с интервью и честные истории выпускников с цифрами офферов.

Подписаться на Telegram-канал