CICD для стартапа: ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ инструмСнты, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈ извСстныС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ CICD-инструмСнтов часто ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€” Microsoft, Oculus, Red Hat, Π΄Π°ΠΆΠ΅ Ferrari ΠΈ NASA. Казалось Π±Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π±Ρ€Π΅Π½Π΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄ΠΎΡ€ΠΎΠ³ΠΈΠΌΠΈ систСмами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ смоТСт ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС условный стартап ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°. Но Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ инструмСнтов доступна ΠΈ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄.

На Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β€” расскаТСм Π΄Π°Π»Π΅Π΅.

CICD для стартапа: ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ инструмСнты, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈ извСстныС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
Π€ΠΎΡ‚ΠΎ β€” 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 ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонним ПО β€” систСмами Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. ΠŸΡ€Π°Π²Π΄Π° систСма довольно слоТна Π² освоСнии β€” Ρƒ Π½Π΅Π΅ большоС число ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΆΠ°Π»ΡƒΡŽΡ‚ΡΡ Π½Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ интСрфСйс ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π°Π³Π΅Π½Ρ‚Ρ‹ для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

CICD для стартапа: ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ инструмСнты, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈ извСстныС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
Π€ΠΎΡ‚ΠΎ β€” 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 инструмСнты, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ нСбольшим организациям ΠΈ стартапам. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚Π΅ свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ инструмСнты Π² коммСнтариях, ΠΈ ΠΌΡ‹ постараСмся Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ².

О Ρ‡Π΅ΠΌ ΠΌΡ‹ пишСм Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ