5 инструментов непрерывной интеграции

5-CI-open-source-servers

Обзор интересных серверов непрерывной интеграции с открытым исходным кодом, которые можно безвозмездно использовать для своих проектов.

— А как вы разрабатываете? Kanban, XP, Waterfall?
— Срам.
— Может быть Скрам?
— Нет, срам: каждый день стыдобушка, в конце месяца срамота.

Непрерывная интеграция является неотъемлемой частью гибких методологий разработки (scrum, kanban и т.п.). От спринта к спринту команда стремиться «не сломать сборку» добавляя новые фичи в проект. Однако, разработчики полностью сосредоточены на добавление нового функционала, случается, что и ошибки попадают в код, чем ломают сборку. Что бы остановить такие ошибки, поступающие из системы контроля версий, сервер CI (Continius integration) проверяет качество кода. Если в какой то момент, в код закрадывается ошибка, сервер CI очень быстро сообщит об этом.

Существует ряд платных продуктов от именитых компаний, которые специализируются на продуктах для разработчиков.  Bamboo от Atlassian  и Teamcity от Jetbrains — наиболее популярные серверы непрерывной интеграции среди платных продуктов. Однако, существует несколько приличных заменителей, кратких обзор которых, представлен ниже.


Jenkins

Сайт | GitHub | Creative commons attribution 4.0Jenkins CI

Наиболее популярный из известный в среде CI серверов с открытым исходным кодом, стал ответвлением от своего предшественника — CI сервера Hudson. Написан на языке Java и может быть очень просто установлен используя команду “java -jar jenkins.war”. Так же можно использовать установку в контейнере сервлета. Jenkins поддерживает ряд систем контроля версий, таких как Git, Mercurial, Subversion, Clearcase и многие другие. Возможно использование систем сборок Apache Ant, Apache Maven и выполнение других shell скриптов или windows скриптов для действий до и после сборки.


Buildbot

Сайт | GitHub | GNU GPL V2
BuildbotНаписаный в основном на Python и основаный на Twisted фреймворке. Начинался как более легковесная альтернатива Mozilla Tinderbox и сейчас используется в таких проектах как Mozilla, Chromium, Webkit и многими другими. Buildbot устанавливается в виде основного сервера (master) и подчиненных (slave). С основного сервера осуществляется мониторинг изменений в репозитории, координация работы подчиненных серверов и рассылка отчетов пользователям и разработчикам. Подчиненный сервер может запускаться под различными операционными системами. Настраивается при помощи конфигурационных скриптов Python на основном сервере. Эти скрипты для настройки компонентов сборки очень просты в понимании, однако обладают всей мощью питона.


Travis CI

Сайт | GitHubMIT LicenseTravis-CI

Travis CI вероятно самый простой CI сервер, для того что бы начать. Кроме того, что он распростроняется с открытым исходным кодом и соответственно бесплатен при установке на свой сервер, Travis CI имеет SaaS версию, которая бесплатна для проектов с открытым кодом. При регистрации и настройке просто нужно закрепить свой GitHub аккаунт, получить необходимые права и добавить .travis.yaml файл в своем проекте. Travis CI соберет новый билд после добавления изменений на GitHub. О том как начать, подробнее описано в документации.


Strider-cd

Сайт | GitHubBSD License
Srider-cdStrider написан на JavaScript и его серверном фреймворке Node.JS. Использует MongoDB для хранения данных. Для начала работы со Strider, необходимо установить MongoDB и Node.js. Затем его просто установить одной командой через установщик пакетов Node.JS

npm install -g strider

Strider настраивается с помощь плагинов, однако, вероятнее всего, потребуется ручная правка конфигурационных файлов, для того, что бы сделать его пригодным к использованию в своём проекте. Если хотите более быструю установку без особых усилий программирования, следует искать другие варианты.


GoCD

Сайт | GitHubApache license V2GoCD

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