Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

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

Глава 9 из книги "Архитектура приложений с открытым исходным кодом", том 1.

Оригинал: Continuous Integration
Автор: C. Titus Brown, Rosangela Canino-Koning
Перевод: А.Панин

9.2.3. Модель реализации: Jenkins

Jenkins является широко применяемой системой непрерывной интеграции, реализованной с использованием языка программирования Java; до начала 2011 года этот программный продукт был известен под названием Hudson. Данная система может выступать в роли как отдельной системы непрерывной интеграции, работая в локальной системе, так и координатора удаленных сборок, или даже пассивного сервера, принимающего информацию о сборках от удаленных серверов. Система использует преимущества стандарта JUnit XML для модульного тестирования и создания отчетов о степени охвата кода и интеграции отчетов от различных инструментов тестирования. Разработка Jenkins была начата компанией Sun, но система широко применяется в различных компаниях и имеет надежное сообщество, сформированное вокруг ее открытого исходного кода.

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

Система Jenkins может управлять множеством удаленных машин с помощью соединения SSH, инициированного центральным сервером или клиентом с использованием технологии JNLP (Java Web Start). Это соединение является двухсторонним и позволяет осуществлять взаимодействие объектов и последовательную передачу данных.

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

Для контролируемых центральным сервером задач система Jenkins предусматривает расширение "блокировок", позволяющее избежать параллельного выполнения этих задач, при этом по состоянию на январь 2011 года разработка этого расширения еще не завершена.


Продолжение статьи: Модель реализации: Pony-Build.