Prog Academy
RU UA
DevOps и облака

Что такое CI/CD?

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

Смысл в том, чтобы находить проблемы рано и выпускать изменения без стресса. Ошибка, обнаруженная конвейером через пять минут после коммита, стоит несравнимо дешевле, чем та же ошибка, найденная пользователем через неделю.

Типичный пайплайн: получить код → собрать → прогнать тесты → проверить качество и безопасность → собрать контейнер → развернуть на тестовом окружении → после проверки выкатить в продакшен. Настраивают всё это в GitHub Actions, GitLab CI, Jenkins и подобных системах.

CI и CD — разные вещи

CI (Continuous Integration) — непрерывная интеграция: код всех разработчиков регулярно вливается в общую ветку, и каждая такая порция автоматически собирается и тестируется. CD — это либо continuous delivery (версия всегда готова к выпуску, но кнопку нажимает человек), либо continuous deployment (выкатка происходит автоматически). CI отвечает за качество кода, CD — за его доставку.

Связанные термины

DevOps

DevOps — подход к разработке, в котором создание программы и её эксплуатация объединены в один процесс: та же команда отвечает и за код, и за то, как он собирается, разворачивается и работает на серверах. Цель — выпускать изменения часто, быстро и безопасно.

Git

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

Docker

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

Test Automation

Автоматизация тестирования — написание программ, которые сами выполняют проверки и сравнивают результат с ожидаемым. Такие тесты запускают при каждом изменении кода, чтобы быстро замечать поломки в уже работающей функциональности.

Infrastructure as Code

Infrastructure as Code — подход, при котором серверы, сети, базы и права доступа описываются в конфигурационных файлах и создаются автоматически по этому описанию, вместо ручной настройки через веб-интерфейс облака.