Что такое CI (Continuous Integration)
Continuous Integration (непрерывная интеграция) — это практика разработки программного обеспечения, при которой разработчики регулярно (несколько раз в день) интегрируют свои изменения кода в общий репозиторий, после чего автоматически выполняются сборка и тестирование.
Представьте себе конвейер на заводе: каждый рабочий добавляет свою деталь, и контроль качества проверяет изделие сразу же, а не в конце смены, когда исправлять ошибки уже дорого и сложно.
Основные принципы CI
- Единый репозиторий исходного кода — весь код хранится в системе контроля версий (Git).
- Автоматизированная сборка — каждый коммит запускает процесс сборки проекта.
- Автоматизированное тестирование — после сборки автоматически выполняются unit-тесты, интеграционные тесты и т.д.
- Быстрая обратная связь — разработчик узнает о проблемах в течение нескольких минут после коммита.
- Частая интеграция — чем чаще разработчики интегрируют код, тем меньше конфликтов и проблем возникает.
Типичный CI-цикл
- Разработчик делает
git pushв удаленный репозиторий. - CI-сервер (например, Jenkins) обнаруживает изменения (через webhook или polling).
- Запускается сборка проекта (
mvn clean compileилиgradle build). - Выполняются автоматические тесты.
- Генерируются отчеты о результатах (покрытие, статический анализ).
- Разработчик получает уведомление об успехе или ошибке.
Пример
Developer --push--> Git --> Webhook --> CI Server --> Build --> Test --> Notify
Вывод
CI позволяет обнаруживать ошибки интеграции на ранних стадиях, когда их исправление обходится дешевле всего. Без CI команда рискует столкнуться с «интеграционным адом» перед каждым релизом.
На собеседовании: часто просят объяснить разницу между CI и CD, а также описать типичный CI-цикл. Важно подчеркнуть, что CI — это прежде всего практика и культура (частая интеграция), а не конкретный инструмент.