Непрерывная интеграция
Материал из Википедии — свободной энциклопедии
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать ёё более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.
Содержание |
[править] Требования к проекту
- Исходные коды и все, что необходимо для сборки и тестирования проекта, хранится в репозитории системы управления версиями;
- Операции копирования из репозитория, сборки и тестирования всего проекта автоматизированы и легко вызываются из внешней программы
[править] Организация
На выделенном сервере организуется служба, запускающая локальную сборку
- по внешнему запросу,
- по расписанию,
- по факту обновления репозитория, и др.
[править] Сборка по расписанию
В случае сборки по расписанию (англ. daily build — русск. суточная сборка) дополнительно вводится система нумерации сборок. Обычно каждая сборка нумеруется натуральным числом, которое увеличивается перед очередной сборкой. Исходные тексты и другие исходные данные при взятии их из репозитория системы контроля версий помечаются номером сборки. Благодаря этому точно такая же сборка может быть точно воспроизведена в будущем — достаточно взять исходные данные по нужной метке и запустить процесс снова. Это даёт возможность повторно выпускать даже очень старые версии программы с небольшими исправлениями.
[править] Преимущества
- проблемы интеграции выявляются и исправляются быстро, что оказывается дешевле;
- немедленный прогон модульных тестов для свежих изменений;
- постоянное наличие текущей стабильной версии вместе с продуктами сборок — для тестирования, демонстрации, и т.п.
- немедленный эффект от неполного или неработающего кода приучает разработчиков к работе в итеративном режиме с более коротким циклом.
[править] Недостатки
- затраты на поддержку работы непрерывной интеграции;
- потенциальная необходимость в выделенном сервере под нужды непрерывной интеграции;
- немедленный эффект от неполного или неработающего кода — отучает разработчиков от выполнения периодических резервных включений кода в репозиторий;