CI / CD като услуга: 10 инструмента за непрекъсната интеграция и доставка в облака

Облакът и непрекъснатата интеграция (CI) са естествено съвпадение. Докато облакът ни освобождава от болката от инсталирането и поддръжката на физически сървъри, непрекъснатата интеграция автоматизира далеч от болката от изграждането, тестването и внедряването на нашия код. Ако и двамата имат за цел да свалят работата от раменете на екипите за разработка, има смисъл само да ги комбинирате и да премахнете още по-трудности с една стъпка.

Има много услуги за непрекъсната интеграция и всички те правят едно и също нещо, поне в абстрактен смисъл. Те започват със списък на задачите като компилиране или тестване, които трябва да бъдат изпълнени, преди светът да може да оцени гения във вашия нов софтуер. Когато ангажирате вашите редове код, инструментите започват да работят чрез контролния списък, докато не се сблъскат с пречка. Ако няма прегради, всички са доволни.

Всеки може да използва непрекъсната интеграция за всеки проект за разработване на софтуер, но най-големите предимства се ползват от екипи, за предпочитане големи екипи, които работят върху едни и същи, блокиращи блокове код. Най-задълбочените внедрения на непрекъснатата интеграция изграждат и възстановяват кода преди тестването и повторното му тестване, и всичко това в търсене на нови грешки и несъвместимости, които може да са били създадени, когато различни членове на екипа проверяват кода си. Сървърите за непрекъсната интеграция синхронизират работата на всички програмисти и помагат на екипа да открие всякакви проблеми. 

Някои списъци със задачи за CI сървъра завършват с тестовете, но напоследък все повече екипи разширяват списъците, за да включват разполагане на новия код, процес, понякога наречен „непрекъснато внедряване“. Напълно автоматизираното внедряване кара някои хора да се изнервят и те често ще добавят някои ръчни паузи в процеса. Добавянето на малко отчетност и човешка сигурност им позволява да се отпуснат малко. Те ще наричат ​​този хибриден подход „непрекъсната доставка“, тъй като той доставя кода на някакъв етапен или тестващ клъстер, където ще изчака човек да направи последния тласък към производството. 

Ако непрекъснатата интеграция е чудесна в сървърната стая в коридора, тя може да бъде още по-добра в облака, където има големи възможности за по-бърза доставка и по-голяма ефективност. В най-добрите случаи облаците могат да разделят работата и да изпълняват задачите паралелно. Услугите започват с голям набор от хардуер и след това го споделят между много екипи. Докато всички не натискат кода си едновременно, компилациите и тестовете ще работят много по-бързо. Закупуването на същия огромен хардуер само за моментите, в които разработчиците искат да изпълнят всички тестове, е непосилно, но ако екипите споделят багажника, всички те могат да се насладят на бързите скорости.

Съществуват обаче опасности и притеснения и най-голямата може да бъде загубата на контрол. Всички облачни услуги изискват предаване на вашия код на трета страна - избор, който може да се почувства облекчаващ за някои, но плашещ за други. Всички облачни услуги се опитват усилено да подчертаят сигурността, но по някакъв начин се чувства различно, когато кодът е под вашия покрив.

В допълнение към широката поддръжка за всички основни езици, тези услуги обхващат изненадващ брой малки и повече от няколко наистина странни и необичайни. Това е по-скоро резултат от добри архитектурни решения в началото, отколкото каквито и да било героични усилия на разработчиците. Списъците със задачи почти винаги се кодират като команди за някаква обвивка или команден ред, така че инструментите за непрекъсната интеграция продължават да издават командите, докато списъкът не бъде изчерпан или се появи някакво непреодолимо препятствие. Някои от езиците като Java предлагат по-сложни опции, но в по-голямата си част инструментите могат да постигнат всичко, което можете да направите с команден ред. 

Ето 10 различни опции за непрекъсната интеграция в облака.

CloudBees

CloudBees Core стартира с Дженкинс, добре познатия проект с отворен код за непрекъсната интеграция, след което добави тестване, поддръжка и известна увереност, че кодът просто ще работи. Компанията победи всички експериментални плъгини, добави няколко свои собствени и след това полира правилните, за да работят според очакванията, когато имате нужда от тях.

В CloudBees все още работят 80 процента от екипа за разработка на Дженкинс и те често допринасят с код за проекта с отворен код, така че можете да сте сигурни, че са разбрали добре тази доминираща платформа. За да ускори нещата, CloudBees също добави обширна паралелизация, както и инструментариум за проследяване на процеса ви на разработка.

CloudBees предлага разнообразни ценови точки, които варират от безплатни нива до „стартови комплекти“ за цяла година на услугата. Компанията също така прекратява поддръжката на Jenkins за всеки, който се нуждае от помощ с инструмента, но не се нуждае или иска облачните изчисления.

AWS CodePipeline

Инструментът на Amazon за непрекъсната интеграция и внедряване, AWS CodePipeline, е оптимизиран за доставяне на код на AWS сървър, като същевременно е отворен за по-сложни пътища за вашия код и данни. Основният инструмент предлага приятна селекция от предварително конфигурирани среди за изграждане на основните езици (Java, Python, Node.js, Ruby, Go, Android, .Net Core за Linux) и след това зарежда резултата в сегмент S3, преди да го изпрати на сървър, за да започне да работи.

Има изненадващо голям брой слоеве с малко по-различни имена. CodeBuild грабва най-новия ви гений от CodeCommit, когато е задействан от CodePipeline и след това предава резултата на CodeDeploy. Ако това е твърде много неща за Code, за да можете да ги конфигурирате, можете да преминете направо към CodeStar, който предлага друг слой автоматизация. Ако само имаше CodeBugEraserStar, за да изтрие автоматично всичките ни грешки. Струва си да се отбележи, че технически не плащате за нито един от тези слоеве на кода. Amazon ви таксува само за ресурсите за изчисления и съхранение, използвани по пътя. Не е съвсем безплатно, въпреки че се чувства така.

Bitbucket тръбопроводи

Atlassian, разработчиците на популярната дъска за проследяване на работа, Jira и хранилището на кодове, Bitbucket, решиха да се възползват от нашия работен процес, като създадоха Bitbucket Pipelines, инструмент за непрекъсната интеграция в облака Bitbucket. Тайният сос е по-голяма интеграция, в този случай под формата на връзки между механизма за изграждане и другите инструменти на Atlassian. Поне козметично, Pipelines дори не е отделно нещо. Това е просто още една опция от менюто за всеки проект в Bitbucket. Друга опция от менюто сочи към разполагания, като ви позволява да изберете къде да завършат компилациите.

Връзките са благословия и ограничение. Ако изберете един от шаблоните, вече дефинирани за основните езици (Java, JavaScript, Python, PHP, .Net и др.), Можете да изграждате и внедрявате кода си с няколко щраквания. Но ако се отдалечите от стандартите, ще започнете да откривате, че опциите не са там. Atlassian насърчава пазар на приложения, които изглежда са комбинация от диаграми и уеб куки в други услуги. Най-горното приложение на диаграмата, докато пиша това, ще свърже Bitbucket с Дженкинс, вероятно за да направи нещо, което не може да се направи бързо в стените.

Основното предимство на тръбопроводите е скоростта. Atlassian предварително е проектирал повечето от основните пътища от код до стартиране на внедряване и можете да следвате стъпките на компанията само за няколко долара. Трудно е да се сравнят разходите за използване на Bitbucket, тъй като компилациите се оценяват за минути, както повечето безсървърни модели, но екипите често отделят клъстер от екземпляри за обработка на компилациите на Jenkins. Дори да ги изключите през нощта и почивните дни, часовете се сумират.

GitLab CI / CD

Един от най-големите конкуренти на Atlassian е GitLab, друга компания, която иска да се справи с всяка стъпка от процеса между вашите пръсти и текущото внедряване. Механизмите за изграждане, тестване и внедряване на GitLab също са свързани директно с неговите хранилища Git, за да могат да бъдат задействани при ангажиране. Процесът до голяма степен е изграден около контейнери на Docker и това кеширане може значително да опрости част от работата по конфигурирането, която трябва да се направи около компилациите на Дженкинс.

Задачите за изграждане могат да бъдат насочени към всеки език, но трябва да бъдат задействани от GitLab Runner, инструмент за автоматично мащабиране, написан в Go, готов за повечето платформи. Тази гъвкавост означава, че можете да задействате произволна работа на други машини, нещо, което може да бъде полезно със сложни архитектури, които правят повече от просто предоставяне на микроуслуги.

Ценообразуването е свързано с различните нива според приблизителните нужди. Групите от златни нива, например, получават всички най-добри функции като табла за сигурност и 50 000 минути надграждане върху споделения клъстер от машини. Няма такса за използване на собствени машини за част от процеса или отделни екземпляри в някой друг облак.

CircleCI

Много от инструментите за непрекъсната интеграция се фокусират върху код, който може да бъде изграден в средата на Linux. CircleCI изгражда и доставя в света на Linux, но предлага и продукт, който ще изгражда приложения за Android и всичко, което излиза от Xcode на Apple (за iOS, MacOS, tvOS или watchOS). Ако работите в екип, който създава приложения за тези платформи, можете да ангажирате кода си и да оставите CircleCI да наложи някаква дисциплина за тестване на всички разнопосочни гении на вашия екип.

Списъците със задачи са изписани в YAML файлове. CircleCI използва Docker, в цялата му многопластова слава, за да конфигурира тестовите среди за кода. Компилациите започват с пресни контейнери, както и всички тестове. Работата на Mac работи във виртуални машини, които имат също толкова кратък живот. Това избягва някои от проблемите с конфигурацията, тъй като чистите среди нямат остатъци от бита. (Така че, ако проблемите ви са причинени от дълготраен цифров флотсам, това е вашата вина.)

Ценообразуването е фокусирано върху това колко процесор изсмуква вашите компилации. Броят на потребителите и броят на хранилищата са ограничени до безкрайност. Броят минути за изграждане и контейнери, които правят тази сграда, обаче се измерват. Първият контейнер е безплатен и можете да стартирате една компилация в него. Ако искате повече паралелизъм или повече пропускателна способност, CircleCI ще спечели малко пари. Потребителите на Mac не получават същата безплатна сделка, но има уводни планове за всеки, който тества услугата.

Травис CI

Ако вашите компилации произвеждат код, който трябва да бъде тестван на Windows кутии, тогава Travis CI ви предлага една спирка. Компанията предлага опции за MacOS и Linux от известно време, но току-що пусна опцията за Windows, което улеснява производството на код, който работи на още повече места.

Списъците със задачи също са изписани в YAML и заданията се изпълняват в чисти виртуални машини с доста стандартна конфигурация. Кодът на Linux получава някои основни версии на Ubuntu, кодът на Mac работи в една от дузината комбинации на OS X и Xcode и JDK. Засега кодът на Windows може да попадне само в една версия на Windows Server (1803). Travis CI предлага дълъг списък от 30 езика и правила за изграждане, които са предварително конфигурирани и почти готови за работа.

Ценообразуването се основава на броя едновременни задачи, които могат да бъдат изпълнени наведнъж, но няма официални ограничения за броя минути, които тези компилации могат да заемат. Все едно получавате фиксиран брой специални екземпляри за вашата работа и те са готови през цялото време. Няма безплатни опции за собствена работа, но проектите с отворен код са „винаги безплатни“ - така че това може да е най-простият начин да изпробвате Travis CI.

Azure тръбопроводи

Ако се чудите дали съвременният Microsoft има отношение „Не е изобретено тук“, не търсете повече от Azure Pipelines. Литературата за продажбите казва: „Всеки език, всяка платформа.“ Макар че това е почти сигурно малко хипербола и Azure вероятно няма какво да предложи на програмистите ENIAC, но на видно място предлага пътища на Microsoft, Linux и MacOS за вашия код. Ъгълът на Apple е насочен само към компилации на MacOS, а не към iOS или tvOS или watchOS, но нека не се взимаме. Това е чаша, която е много повече от наполовина пълна.

Абстрактно, системата е подобна на останалите. Има агенти, които изпълняват компилации за производство на артефакти. Някои от тях могат да бъдат самостоятелно хоствани, ако тази опция помогне. Стекът обхваща напълно контейнери на Docker и хардуерът на Azure е готов да ги стартира за вас. Всички тези подробности могат да бъдат щракнати заедно с визуален дизайнер, вграден в уеб страница, или да бъдат посочени с YAML, ако предпочитате да живеете в света на командния ред.

Ценообразуването идва с безплатна „паралелна работа“ с 1800 минути време за изграждане. Ако искате повече паралелизъм или повече изградено време, започвате да плащате. Планът включва щедър безплатен слой за проекти с отворен код, отново подчертавайки желанието на Microsoft да участва в общата общност с отворен код. Но ако Microsoft ще похарчи 7,5 милиарда долара за закупуване на място на масата, като придобие GitHub, е, има много смисъл. Къде ще работи целия този код? Azure Pipelines с удоволствие ще го премести безпроблемно към хардуера на Azure.