Непрерывная интеграция

Материал из devopswiki
Перейти к: навигация, поиск

Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения проблем интеграции.

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

Непрерывная интеграция является одним из основных приёмов экстремального программирования.(англ. Extreme Programming, XP).

Требования к проекту

  • исходные коды и все, что необходимо для сборки и тестирования проекта, хранится в репозитории системы управления версиями
  • операции копирования из репозитория, сборки и тестирования всего проекта автоматизированы и легко вызываются из внешней программы

Организация

На выделенном сервере организуется служба, в задачи которой входят:

  • получение исходного кода из репозитория
  • сборка проекта
  • выполнение тестов
  • развёртывание готового проекта
  • отправка отчетов

Локальная сборка может осуществляться:

  • по внешнему запросу
  • по расписанию
  • по факту обновления репозитория и по другим критериям

Сборка по расписанию

Сборки по расписанию как правило, проводятся каждой ночью в автоматическом режиме. Это так называемые ночные сборки (англ. nightly build), чтобы к началу рабочего дня были готовы результаты тестирования). Для различения дополнительно вводится система нумерации сборок — обычно, каждая сборка нумеруется целым числом, которое увеличивается с каждой новой сборкой. Исходные тексты и другие файлы помечаются номером сборки в репозитории системы контроля версий. Благодаря этому, точно такая же версия сборки может быть воспроизведена в будущем — достаточно взять исходный код по нужной метке и запустить процесс снова. Это дает возможность повторно выпускать даже очень старые версии программы с небольшими исправлениями.

Преимущества

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

Средства непрерывной интеграции

  • Bamboo (англ.)
  • Hudson и Jenkins
  • CruiseControl
  • TeamCity
  • BuildBot

Ссылки

Непрерывная интеграция (Wikipedia)

Continuous Integration (Wikipedia)