Что такое CI и CD и зачем они нужны
Разбираемся, что скрывается за аббревиатурами CI и CD и почему без них больно.
CI (Continuous Integration) — практика, при которой изменения каждого разработчика автоматически собираются и тестируются при каждом пуше, чтобы ломающие изменения находились за минуты, а не за дни.
Жизнь без автоматизации
Представьте команду без CI/CD. Разработчик закончил фичу, локально «вроде работает», вливает её в основную ветку. Через неделю выясняется, что сборка давно сломана, тесты никто не запускал, а выкладка на прод — это ручной набор команд по памяти на ночь пятницы. Каждый релиз — стресс и ритуал.
Типичные боли ручного процесса:
- «У меня работает». Код зависит от локального окружения, на чистой машине ломается.
- Поздняя интеграция. Конфликты и баги находят через дни после написания кода, когда контекст забыт.
- Хрупкий деплой. Выкладка вручную = человеческий фактор, забытый шаг, разный результат у разных людей.
- Нет единого источника правды. Никто не уверен, проходят ли тесты на текущем состоянии main.
CI: непрерывная интеграция
Continuous Integration отвечает на вопрос «можно ли вообще брать этот код?». На каждый пуш и каждый pull request автоматически: скачивается код, ставятся зависимости, собирается проект, прогоняются линтер и тесты. Если что-то красное — автор узнаёт об этом за минуты, прямо в PR, до ревью и до мержа.
Главная идея: интегрировать изменения часто и маленькими порциями, и пусть машина каждый раз проверяет, что мир не сломался.
CD: доставка и развёртывание
Под аббревиатурой CD прячутся два близких, но разных понятия:
| Continuous Delivery | После успешного CI артефакт автоматически готов к выкладке, но финальный «деплой на прод» запускает человек одной кнопкой. |
| Continuous Deployment | Каждое прошедшее проверки изменение выкатывается на прод автоматически, без ручного шага. |
Разница — в наличии ручного подтверждения перед продом. Многие команды делают непрерывную доставку (delivery) с ручным апрувом и при росте доверия к тестам переходят к деплойменту.
Зачем это нужно
Цель всего курса — автоматизировать всё от пуша до прода. Когда конвейер настроен, вы получаете:
- быструю обратную связь: сломал — узнал сразу;
- повторяемость: сборка и деплой одинаковы у всех и всегда;
- смелость релизить часто, потому что выкладка дешёвая и предсказуемая;
- живую документацию процесса в виде кода в репозитории.
Итог
- CI автоматически собирает и тестирует код на каждое изменение.
- Continuous Delivery готовит релиз и ждёт кнопку; Continuous Deployment катит сам.
- Цель — короткий и надёжный путь от коммита до пользователя.