Jenkins as automation tool
LVEE Winter 2013
История развития уходит корнями в проект 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
Назад