Что такое CI/CD?
CI/CD — автоматический конвейер, через который проходит каждое изменение кода: сборка, запуск тестов и доставка готовой версии на серверы. Разработчик отправляет код в репозиторий, а всё остальное происходит без ручных действий.
Смысл в том, чтобы находить проблемы рано и выпускать изменения без стресса. Ошибка, обнаруженная конвейером через пять минут после коммита, стоит несравнимо дешевле, чем та же ошибка, найденная пользователем через неделю.
Типичный пайплайн: получить код → собрать → прогнать тесты → проверить качество и безопасность → собрать контейнер → развернуть на тестовом окружении → после проверки выкатить в продакшен. Настраивают всё это в GitHub Actions, GitLab CI, Jenkins и подобных системах.
Где применяется
Конвейер собирают вокруг репозитория: при каждом изменении запускаются линтеры, тесты и сборка, а при слиянии в основную ветку новая версия уезжает на стенд или в продакшен. Инструменты — GitHub Actions, GitLab CI, Jenkins, Azure DevOps; выбор обычно определяется тем, где лежит код.
Это не только забота DevOps-инженера. QA-автоматизатор встраивает в конвейер свои проверки, разработчик получает результат тестов прямо в запросе на слияние, а тимлид настраивает правило: без зелёной сборки изменения не попадают в основную ветку. Отсюда и требование знать CI/CD почти в любой технической вакансии.
Пример
Разработчик отправляет правку в репозиторий и уходит на обед. За это время конвейер собирает проект, прогоняет четыреста тестов, строит образ контейнера и разворачивает его на тестовом стенде — к возвращению в чате уже висит ссылка на готовую версию.
name: build
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test CI и CD — разные вещи
CI (Continuous Integration) — непрерывная интеграция: код всех разработчиков регулярно вливается в общую ветку, и каждая такая порция автоматически собирается и тестируется. CD — это либо continuous delivery (версия всегда готова к выпуску, но кнопку нажимает человек), либо continuous deployment (выкатка происходит автоматически). CI отвечает за качество кода, CD — за его доставку.
Частые вопросы
Чем CI отличается от CD?
CI — непрерывная интеграция: каждое изменение автоматически собирается и проверяется тестами. CD — доставка или развёртывание готовой версии дальше: на тестовый стенд или в продакшен. CI отвечает на вопрос «код рабочий?», CD — «версия доехала до пользователей?».
Нужен ли CI/CD маленькой команде?
Да, и окупается он быстро. Даже конвейер из двух шагов — прогнать тесты и собрать проект — экономит время и снимает целый класс проблем вида «у меня локально работало». Настройка простого пайплайна занимает несколько часов.
Какой инструмент CI/CD выбрать?
Проще всего взять тот, что встроен в ваш хостинг кода: GitHub Actions для GitHub, GitLab CI для GitLab. Jenkins выбирают компании со сложными процессами и требованием держать всё на своих серверах. Принципы везде одинаковые, отличается синтаксис.
Что делать, если сборка падает часто?
Сначала разбирают причину: нестабильные тесты, зависимость от внешних сервисов, разное окружение. Падающий конвейер, который все привыкли игнорировать, вреднее его отсутствия — команда перестаёт доверять результату и начинает выкатывать изменения мимо процесса.