CI-CD для стартапа: какие есть инструменты, и почему ими пользуются не только крупные и известные компании

в 6:11, , рубрики: buildbot, ci/cd, devops, gocd, ITGLOBAL.COM, Jenkins, obs, PHP Censor, Rex, Rundeck, Блог компании ITGLOBAL.COM, Разработка под e-commerce

Разработчики CICD-инструментов часто указывают в качестве клиентов крупные компании — Microsoft, Oculus, Red Hat, даже Ferrari и NASA. Казалось бы, что такие бренды работают только с дорогими системами, которые не сможет позволить себе условный стартап из пары разработчиков и дизайнера. Но значительная часть инструментов доступна и для небольших команд.

На что можно обратить внимание — расскажем далее.

CI-CD для стартапа: какие есть инструменты, и почему ими пользуются не только крупные и известные компании - 1
Фото — Csaba Balazs — Unsplash


PHP Censor

CI-сервер с открытым исходным кодом, облегчающий сборку проектов на PHP. Это — форк проекта PHPCI. Сам PHPCI до сих пор развивается, однако не так активно, как прежде.

PHP Censor умеет работать с репозиториями GitHub, GitLab, Mercurial и несколькими другими. Для тестирования кода инструмент использует библиотеки Atoum, PHP Spec, Behat, Codeception. Вот пример файла конфигурации для первого случая:

test:
    atoum:
        args: "command line arguments go here"
        config: "path to config file"
        directory: "directory to run tests"
        executable: "path to atoum executable"

Считается, что PHP Censor неплохо подходит для развертывания небольших проектов, но хостить и настраивать его придется самостоятельно (self-hosted). Эту задачу упрощает довольно подробная документация — она есть на GitHub.


Rex

Rex — это сокращение от Remote Execution. Систему разработал инженер Ференц Эрки (Ferenc Erki), чтобы автоматизировать процессы в дата-центре. Работа Rex строится на Perl-скриптах, но знать этот язык для взаимодействия с инструментом необязательно — большинство операций (например, копирование файлов) описано в библиотеке функций, а скрипты часто умещаются в десять строк. Вот пример для входа на нескольких серверах и запуска uptime:

use Rex -feature => ['1.3'];

user "my-user";
password "my-password";

group myservers => "mywebserver", "mymailserver", "myfileserver";

desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
   my $output = run "uptime";
   say $output;
};

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


Open Build Service (OBS)

Это — платформа для оптимизации разработки дистрибутивов. Её код открыт и лежит в репозитории на GitHub. Автор инструмента — компания Novell. Она участвовала в разработке дистрибутива SuSE, а этот проект изначально назвала openSUSE Build Service. Неудивительно, что Open Build Service используют для сборки проектов в openSUSE, Tizen и VideoLAN. С инструментом также работают Dell, SGI и Intel. Но есть среди постоянных пользователей и небольшие стартапы. Специально для них авторы собрали (стр.10) преднастроенный программный пакет. Сама система полностью бесплатна — потратить деньги придется только на хостинг или железный сервер для её развертки.

Но за все время существования инструмент так и не обзавелся широким сообществом. Хотя он был частью Linux Developer Network, отвечающей за стандартизацию открытой ОС. Бывает сложно найти на тематических форумах ответ на интересующий вопрос. Но один из резидентов Quora отметил, что в IRC-чате на Freenode участники сообщества отвечают довольно охотно. Проблема маленького комьюнити не глобальна, так как решение многих задач описано в официальной документации (PDF и EPUB). Там же можно найти лучшие практики по работе с OBS (есть примеры и кейсы).


Rundeck

Открытый инструмент (GitHub), автоматизирующий задачи в дата-центре и облаке с помощью скриптов. За их выполнение отвечает специальный сервер сценариев. Можно сказать, что Rundeck — это «дочка» платформы для управления приложениями ControlTier. От неё Rundeck отделился в 2010 году и обзавелся новой функциональностью — например, интеграциями с Puppet, Chef, Git и Jenkins.

Системой пользуются в The Walt Disney Company, Salesforce и Ticketmaster. Но проект подходит и для стартапов. Это связано с тем, что Rundeck распространяется по лицензии Apache v2.0. При этом инструмент довольно прост в использовании.

Резидент Reddit, который работал с Rundeck, говорит, что решал большую часть трудностей самостоятельно. С этим ему помогли документация и электронные книги, опубликованные разработчиками.

Также в сети можно найти краткие руководства по настройке инструмента:


GoCD

Открытый инструмент (GitHub) автоматизирующий контроль версий кода. Его представила в 2007 году компания ThoughtWorks — тогда проект назывался Cruise.

С GoCD работают инженеры онлайн-ресурса по продаже автомобилей AutoTrader, генеалогический сервис Ancestry и поставщик кредитных карт Barclaycard. Однако четверть пользователей инструмента составляет малый бизнес.

Популярность сервиса среди стартапов можно объяснить его открытостью — он распространяется по лицензии Apache v2.0. При этом GoCD имеет плагины для интеграции со сторонним ПО — системами авторизации и облачными решениями. Правда система довольно сложна в освоении — у нее большое число операторов и команд. Также некоторые пользователи жалуются на неудачный интерфейс и необходимость настраивать агенты для масштабирования.

CI-CD для стартапа: какие есть инструменты, и почему ими пользуются не только крупные и известные компании - 2
Фото — Matt Wildbore — Unsplash

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


Jenkins

Jenkins широко известен и считается своеобразным стандартом в сфере CICD — конечно, без него эта подборка была бы не совсем полной. Инструмент появился в 2011 году, став ответвлением проекта Hudson от Oracle.

Сегодня с Jenkins работают в NASA, Nintendo и других крупных организациях. Однако более 8% пользователей приходится на небольшие коллективы до десяти человек. Продукт полностью бесплатен и распространяется по лицензии MIT. Однако хостить и настраивать Jenkins придется самостоятельно — ему требуется выделенный сервер.

За все время существования инструмента вокруг него сформировалось обширное сообщество. Пользователи активно общаются в тредах на Reddit и Google Groups. Материалы по Jenkins также регулярно появляются на Хабре. Если вы бы хотели стать частью комьюнити и начать работу с Jenkins, есть официальная документация и справочник от разработчиков. Еще мы рекомендуем следующие гайды и книги:

У Jenkins есть несколько полезных сторонних проектов. Первый — плагин Configuration as Code. Он упрощает настройку Jenkins за счет удобочитаемых API, которые понятны даже администраторам без глубоких познаний инструмента. Второй — система Jenkins X для облака. Она ускоряет доставку приложений, разворачиваемых на масштабной ИТ-инфраструктуре за счет автоматизации некоторых рутинных задач.


Buildbot

Это — continuous integration система для автоматизации цикла сборки и тестирования приложений. Она автоматически проверяет работоспособность кода каждый раз, когда в него вносятся какие-либо изменения.

Автором инструмента выступил инженер Брайан Уорнер (Brian Warner). Сегодня его на посту сменила инициативная группа Buildbot Oversight Committee, в которую входит шесть разработчиков.

Buildbot используется такими проектами, как LLVM, MariaDB, Blender и Dr.Web. Но его также применяют в менее крупных проектах вроде wxWidgets и Flathub. Система поддерживает все современные VCS и обладает гибкими настройками билдов за счет использования Python для их описания. Разобраться со всеми ними поможет официальная документация и сторонние туториалы, например, вот краткое руководство от IBM.


Разумеется, это не все DevOps инструменты, на которые стоит обратить внимание небольшим организациям и стартапам. Приводите свои любимые инструменты в комментариях, и мы постараемся рассказать о них в одном из следующих материалов.


О чем мы пишем в корпоративном блоге:

Автор: itglobalcom

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js