Что такое CI/CD?
CI/CD — автоматический конвейер, через который проходит каждое изменение кода: сборка, запуск тестов и доставка готовой версии на серверы. Разработчик отправляет код в репозиторий, а всё остальное происходит без ручных действий.
Смысл в том, чтобы находить проблемы рано и выпускать изменения без стресса. Ошибка, обнаруженная конвейером через пять минут после коммита, стоит несравнимо дешевле, чем та же ошибка, найденная пользователем через неделю.
Типичный пайплайн: получить код → собрать → прогнать тесты → проверить качество и безопасность → собрать контейнер → развернуть на тестовом окружении → после проверки выкатить в продакшен. Настраивают всё это в GitHub Actions, GitLab CI, Jenkins и подобных системах.
CI и CD — разные вещи
CI (Continuous Integration) — непрерывная интеграция: код всех разработчиков регулярно вливается в общую ветку, и каждая такая порция автоматически собирается и тестируется. CD — это либо continuous delivery (версия всегда готова к выпуску, но кнопку нажимает человек), либо continuous deployment (выкатка происходит автоматически). CI отвечает за качество кода, CD — за его доставку.
Связанные термины
DevOps — подход к разработке, в котором создание программы и её эксплуатация объединены в один процесс: та же команда отвечает и за код, и за то, как он собирается, разворачивается и работает на серверах. Цель — выпускать изменения часто, быстро и безопасно.
GitGit — система контроля версий: она сохраняет историю изменений проекта, позволяет вернуться к любому предыдущему состоянию и даёт нескольким разработчикам работать над одним кодом параллельно, не перезаписывая правки друг друга.
DockerDocker — инструмент, который упаковывает приложение вместе со всем окружением — кодом, зависимостями, настройками — в контейнер. Такой контейнер запускается одинаково на компьютере разработчика, на тестовом стенде и на сервере.
Test AutomationАвтоматизация тестирования — написание программ, которые сами выполняют проверки и сравнивают результат с ожидаемым. Такие тесты запускают при каждом изменении кода, чтобы быстро замечать поломки в уже работающей функциональности.
Infrastructure as CodeInfrastructure as Code — подход, при котором серверы, сети, базы и права доступа описываются в конфигурационных файлах и создаются автоматически по этому описанию, вместо ручной настройки через веб-интерфейс облака.