- PVSM.RU - https://www.pvsm.ru -

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

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

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

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


PHP Censor [3]

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

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

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

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


Rex [8]

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;
};

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


Open Build Service (OBS) [11]

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

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


Rundeck [23]

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

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

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

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


GoCD [32]

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

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

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

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

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


Jenkins [43]

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

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

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

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


Buildbot [60]

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

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

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


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


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

Автор: itglobalcom

Источник [69]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/jenkins/324553

Ссылки в тексте:

[1] Image: https://habr.com/ru/company/itglobalcom/blog/460735/

[2] Csaba Balazs: https://unsplash.com/photos/q9URsedw330

[3] PHP Censor: https://github.com/php-censor/php-censor

[4] PHPCI: https://github.com/dancryer/PHPCI

[5] пример файла: https://github.com/php-censor/php-censor/blob/master/docs/en/plugins/atoum.md

[6] Считается: https://twitter.com/4rc4n1ne/status/1071431231592640518

[7] она есть на GitHub: https://github.com/php-censor/php-censor/blob/master/docs/en/README.md

[8] Rex: http://www.rexify.org/

[9] официального гайда: http://www.rexify.org/docs/guides/start_using__r__ex.html

[10] электронной книги: http://www.rexify.org/docs/rex_book/index.html

[11] Open Build Service (OBS): https://openbuildservice.org/

[12] GitHub: https://github.com/openSUSE/open-build-service

[13] Novell: https://ru.wikipedia.org/wiki/Novell

[14] используют: https://build.opensuse.org/

[15] стр.10: https://openbuildservice.org/files/manuals/obs-admin-guide.pdf

[16] программный пакет: https://openbuildservice.org/download/

[17] хостинг: https://www.reg.ru/?rlink=reflink-717

[18] он был: https://web.archive.org/web/20150402164858/http:/www.linuxfoundation.org/node/3444

[19] Бывает сложно: https://www.quora.com/What-are-the-pros-and-cons-of-Open-Build-Service-OBS

[20] IRC-чате: http://irc.lc/freenode/opensuse-buildservice/t4nk@@@

[21] в официальной документации: https://openbuildservice.org/help/

[22] можно найти: https://openbuildservice.org/help/manuals/obs-best-practices/

[23] Rundeck: https://www.rundeck.com/open-source

[24] GitHub: https://github.com/rundeck/rundeck/

[25] The Walt Disney Company: https://www.rundeck.com/resources/case-study/disney

[26] Salesforce: https://www.rundeck.com/resources/case-study/salesforce

[27] Ticketmaster: https://www.rundeck.com/resources/case-study/ticketmaster

[28] говорит: https://www.reddit.com/r/devops/comments/3szdgz/which_rundeck_equivalent_is_better/

[29] документация и электронные книги: https://www.rundeck.com/resources

[30] Пошаговое руководство: как установить Rundeck: https://www.linuxsysadmins.com/rundeck-it-automation-tool-step-by-step-installation-guide/

[31] Пять шагов по созданию заданий (jobs): https://blog.e-zest.com/easy-steps-to-create-jobs-in-rundeck

[32] GoCD: https://www.gocd.org/

[33] GitHub: https://www.github.com/gocd

[34] ThoughtWorks: https://en.wikipedia.org/wiki/ThoughtWorks

[35] составляет малый бизнес: https://www.g2.com/compare/gocd-vs-jenkins

[36] имеет: https://www.gocd.org/plugins/

[37] довольно сложна: https://www.reddit.com/r/devops/comments/8awjig/ci_lovers_which_ci_tool_do_you_prefer/

[38] необходимость: https://amaysim.engineering/auto-scaling-build-agents-for-gocdtags-a10f12d5b77c?gi=942a75340c3e

[39] Matt Wildbore: https://unsplash.com/photos/wF14k8SyGzA

[40] официальную документацию: https://docs.gocd.org/current/

[41] блог разработчиков GoCD: https://www.gocd.org/blog/

[42] по настройке: https://www.gocd.org/2019/05/14/installing-configuring-gocd-gke-using-helm/

[43] Jenkins: https://jenkins.io/

[44] считается: https://opensource.com/article/18/12/cicd-tools-sysadmins

[45] став: https://jenkins.io/blog/2011/01/11/hudsons-future/

[46] работают: https://wiki.jenkins.io/pages/viewpage.action?pageId=58001258

[47] более 8%: https://enlyft.com/tech/products/jenkins

[48] по лицензии MIT: https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_MIT

[49] Reddit: https://www.reddit.com/r/jenkinsci/

[50] Google Groups: https://groups.google.com/forum/?nomobile=true#!forum/jenkinsci-users

[51] официальная документация: https://jenkins.io/doc/

[52] справочник от разработчиков: https://jenkins.io/doc/book/

[53] Начало работы с Jenkins: официальное руководство: https://jenkins.io/doc/pipeline/tour/getting-started/

[54] Полный гайд по Jenkins: https://dzone.com/articles/getting-started-with-jenkins-the-ultimate-guide

[55] Jenkins для начинающих: https://devopscube.com/jenkins-2-tutorials-getting-started-guide/

[56] Jenkins 2. Приступаем к работе: https://d.docs.live.net/3ce1778315e9730e/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B/%D0%98%D1%8E%D0%BB%D1%8C%202019/%D0%91%D1%80%D0%B5%D0%BD%D1%82%20%D0%9B%D0%B0%D1%81%D1%82%D0%B5%D1%80

[57] Continuous Delivery с Docker и Jenkins: доставка масштабируемых приложений: https://www.amazon.com/Continuous-Delivery-Docker-Jenkins-Delivering/dp/1787125238

[58] Configuration as Code: https://github.com/jenkinsci/configuration-as-code-plugin

[59] Jenkins X: https://jenkins-x.io/

[60] Buildbot: http://trac.buildbot.net/

[61] сменила: https://github.com/buildbot/botherders

[62] используется: https://github.com/buildbot/buildbot/wiki/SuccessStories

[63] официальная документация: http://docs.buildbot.net/current/tutorial/tour.html

[64] руководство от IBM: https://www.ibm.com/developerworks/library/l-buildbot/index.html

[65] Penetration testing — внешний аудит безопасности: https://blog.itglobal.com/standarty/penetration-testing-vneshnij-audit-bezopasnosti/

[66] NetApp MAX DATA: обзор возможностей решения: https://blog.itglobal.com/resheniya/netapp-max-data/

[67] Краткая история контейнеров: от chroot до Kubernetes: https://blog.itglobal.com/funkcionalnost/vmware-v-mire-kontejnerov/

[68] Защита от DDoS в облаке провайдера: https://blog.itglobal.com/bezopasnost/zashhita-ot-ddos-v-oblake-provajdera/

[69] Источник: https://habr.com/ru/post/460735/?utm_source=habrahabr&utm_medium=rss&utm_campaign=460735