International conference of developers
and users of free / open source software

Jenkins as automation tool

Kanstantsin Shautsou, Minsk/Novopolotsk, Belarus

LVEE Winter 2013

Jenkins is an open source continuous integration (CI) tool written in Java. In CI it helps automate various tasks with code/product manipulation, such as fetch sources from SCM, build sources, run tests, various scenarios, send reports. Jenkins has 42400 active installation, more then 636 plugins that extend base functionality. New version releases almost every week

История развития уходит корнями в проект Hudson, который был форкнут после приобретения компании Oracle компании Sun. Часть основных разработчиков ушло из Sun и продолжило развивать как полностью свободный проект, назвав его Jenkins. Согласно статистике, в код jenkins вносят изменениния около 50 различных человек в месяц. На данный момент основной разработчик Kohsuke Kawaguchi работает в компании CloudBees, которая поддерживает и предлагает SaaS/PaaS решения на базе Jenkins. Существуют платные аналоги Bamboo (Atlassian,Inc), TeamCity (JetBrains).

Jenkins применяется для сборки проектов на языках Java, C/C++, JS, python, groovy, C# и других языков. Содержит: встроенный планировщик запуска задач; возможность запуска задач на подчиненных (slave) агентах под ОС MacOS/Linux/Windows/*BSD; возможность запуска заданий по-цепочке (build pipeline), сохранение истории сборок.

Из практики можно выделить следующие способы применения Jenkins:

  • cборка – непосредственно сборка кода на различных языках;
  • тестирование – запуск интеграционных/нагрузочных тестов с построением графиков и отчетов;
  • deployment – на простых инфраструктурах доставка/установка приложений на серверах;
  • экстремальные – применение там, где не нужно, например создание нагрузочных тестов, замена cron для системных задач и др.

Все действия настраиваются в задачах (Jobs). Задачи строятся из последовательных шагов, например, собрать код, запустить тесты, опубликовать отчеты, отправить уведомления. Задачи можно вызывать последовательно и с условиями, тем самым строя сборочную линию (build pipeline) (например: сборка→установка→интеграционные тесты).

Встроенные виды задач: “free-style” – основной тип, позволяет забирать, собирать, тестировать код, строить упрощенный и расширенный вариант free-style для сборок при помощи maven, умеет отслеживать дерево зависимостей, по-особому осуществляет вызов maven процесса; “matrix job” – позволяет задать матрицу значений параметров с которыми нужно производить сборку. Каждый набор параметров запускается отдельной сборкой; “monitor external job” – ничего сам не выполняет, позволяет аккумулировать журналы от действий выполненных в неинтерактивном режиме на другом сервере.

Результаты запуска задач отображается в сборках (build). Сборка содержит последовательный номер, журнал сборки, возможно графики, тенденции и другую информацию.

Благодаря большому количеству плагинов у конечных пользователей получаются множественные уникальные наборы конфигураций, которые периодически ломаются в связи с исправлением/добавлением новой функциональности. Для таких случаев предустроены встроенные средства: менеджер логирования, groovy script console и java threadDump.

Материалы:
http://jenkins-ci.org/
http://kohsuke.org/

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Back