Непрерывная интеграция (Continuous Integration) — это практика разработки программного обеспечения, которая заключается в слиянии рабочих копий в общую основную ветвь разработки несколько раз в день и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий, но основным преимуществом является сокращение стоимости исправления дефекта, за счёт раннего его выявления. Непрерывная интеграция является одним из основных приёмов экстремального программирования.
При непрерывной интеграции построение проекта должно выполняться с наименьшим допустимым интервалом. Этим интервалом чаще всего берут время между двумя соседними коммитами в систему контроля версий, т.е. построение проекта проходит после каждого коммита. Это позволяет найти те ошибки и проблемы, на которые разработчик не обратил внимания при локальном запуске. Чаще всего проявляются ошибки компиляции или сломанные тесты.
Что нам дает регулярное построение проекта?
- Повышение уверенности – после сотни успешных построений легче быть уверенным в успешности 101-го построения.
- Экономия времени за счет автоматизации повторяемых действий – для успешных регулярных построений проекта обычно требуется автоматизировать все рутинные задачи. Более того, автоматизация рутины позволяет гарантировать одинаковое выполнение необходимых шагов, устраняя риск появления непонятных дефектов при развертывании.
- Развертываемость программного обеспечения – использование подхода непрерывной интеграции позволяет осуществить полное построение проекта с развертыванием, если иметь на входе папку с исходниками и нажать лишь одну кнопку. В случае необходимости поставка пройдет так быстро, как это возможно.
Организация:
На выделенном сервере организуется служба, в задачи которой входят:
- получение исходного кода из репозитория;
- сборка проекта;
- выполнение тестов;
- развёртывание готового проекта;
- отправка отчетов.
Локальная сборка может осуществляться:
- по внешнему запросу,
- по расписанию,
- по факту обновления репозитория и по другим критериям.