Programovanie

CI / CD ako služba: 10 nástrojov na nepretržitú integráciu a doručovanie v cloude

Cloud a nepretržitá integrácia (CI) sú prirodzenou zhodou. Zatiaľ čo nás cloud oslobodzuje od bolesti pri inštalácii a údržbe fyzických serverov, kontinuálna integrácia automatizuje väčšinu bolesti pri budovaní, testovaní a nasadzovaní nášho kódu. Ak sa obaja zameriavajú na to, aby zbrali prácu na pleciach vývojových tímov, má zmysel iba ich skombinovať a jedným krokom eliminovať ešte väčšiu drinu.

Existuje veľa služieb nepretržitej integrácie a všetky robia takmer to isté, aspoň v abstraktnom zmysle. Začínajú zoznamom úloh, ako je kompilácia alebo testovanie, ktoré musia byť splnené, aby svet mohol oceniť genialitu vášho nového softvéru. Keď zadáte riadky kódu, nástroje začnú pracovať cez kontrolný zoznam, kým nenarazia na blokovanie ostatných reklám. Ak nie sú prekážky, sú všetci spokojní.

Ktokoľvek môže použiť nepretržitú integráciu pre akýkoľvek projekt vývoja softvéru, ale najväčšie výhody majú tímy, najlepšie veľké tímy, ktoré pracujú na rovnakých blokujúcich blokoch kódu. Najdôkladnejšie implementácie nepretržitej integrácie vytvárajú a znovu vytvárajú kód pred jeho testovaním a opätovným testovaním, a to všetko pri hľadaní nových chýb a nekompatibilít, ktoré mohli vzniknúť, keď rôzni členovia tímu skontrolujú svoj kód. Nepretržité integračné servery synchronizujú prácu všetkých programátorov a pomáhajú tímu odhaliť akékoľvek problémy.

Niektoré zoznamy úloh pre server CI sa testami končia, ale v poslednej dobe čoraz viac tímov rozširuje zoznamy tak, aby zahŕňali aj nasadenie nového kódu, čo je proces, ktorý sa niekedy nazýva „nepretržité nasadenie“. Plne automatizované nasadenie niektorých ľudí znervózňuje a často pridajú do procesu niekoľko manuálnych prestávok. Pridanie trochy zodpovednosti a istoty ľudí im umožňuje trochu si oddýchnuť. Tento hybridný prístup budú nazývať „nepretržité doručovanie“, pretože dodáva kód do niektorého fázovacieho alebo testovacieho klastra, kde bude čakať na konečný tlak na produkciu človekom.

Ak je nepretržitá integrácia skvelá v serverovej miestnosti na konci chodby, môže to byť ešte lepšie v cloude, kde sú veľké príležitosti pre rýchlejšie doručenie a vyššiu efektivitu. V najlepších prípadoch môžu mraky prácu rozdeliť a vykonávať úlohy paralelne. Služby začínajú veľkým súborom hardvéru a potom ho zdieľajú medzi veľa tímov. Pokiaľ všetci nebudú tlačiť svoj kód súčasne, zostavy a testy budú prebiehať oveľa rýchlejšie. Nákup rovnakého obrovského racku hardvéru iba na okamihy, keď vývojári chcú vykonať všetky testy, je prohibitívny, ale ak tímy zdieľajú tento rack, môžu sa všetci tešiť z výbuchov rýchlosti.

Existujú však nebezpečenstvá a starosti, a najväčšou môže byť strata kontroly. Všetky cloudové služby vyžadujú odovzdanie vášho kódu tretej strane, ktorá môže byť pre niekoho oslobodzujúca, pre ostatných naopak desivá. Všetky cloudové služby sa veľmi snažia zdôrazniť bezpečnosť, ale akosi sa cítia inak, keď je kód pod vašou vlastnou strechou.

Okrem širokej podpory všetkých hlavných jazykov pokrývajú tieto služby prekvapivý počet tých menších a viac ako niekoľko skutočne zvláštnych a neobvyklých. To je skôr výsledok dobrých architektonických rozhodnutí na začiatku ako akékoľvek hrdinské úsilie vývojárov. Zoznamy úloh sú takmer vždy kódované ako príkazy pre nejaký shell alebo príkazový riadok, takže nástroje na nepretržitú integráciu vydávajú príkazy stále až do vyčerpania zoznamu alebo objavenia neprekonateľného blokovania ostatných reklám. Niektoré z jazykov, ako je Java, ponúkajú sofistikovanejšie možnosti, ale väčšinou nástroje dokážu všetko, čo môžete robiť pomocou príkazového riadku.

Tu je 10 rôznych možností na vykonávanie nepretržitej integrácie v cloude.

CloudBees

CloudBees Core začal s Jenkinsom, známym projektom otvoreného zdroja pre nepretržitú integráciu, potom pridal testovanie, podporu a určité uistenie, že sa kód práve spustí. Spoločnosť odhalila všetky experimentálne doplnky, pridala niekoľko svojich vlastných a potom vyleštila tie správne, aby fungovali podľa očakávania, keď ich potrebujete.

CloudBees stále zamestnáva 80 percent vývojového tímu Jenkins a často prispieva kódom do projektu open source, takže si môžete byť istí, že tejto dominantnej platforme dobre rozumejú. Aby sme to urýchlili, CloudBees pridal tiež rozsiahlu paralelizáciu a prístrojové vybavenie na sledovanie vášho vývojového procesu.

CloudBees ponúka rôzne cenové body, ktoré sa pohybujú od bezplatných úrovní po „štartovacie súpravy“ za celý rok poskytovania služby. Spoločnosť tiež zverejňuje podporu pre Jenkins pre všetkých, ktorí potrebujú pomoc s týmto nástrojom, ale nepotrebujú alebo nechcú cloudové výpočty.

AWS CodePipeline

Nástroj spoločnosti Amazon na nepretržitú integráciu a nasadenie, AWS CodePipeline, je optimalizovaný na doručovanie kódu na server AWS, pričom je stále otvorený komplikovanejším spôsobom pre váš kód a údaje. Základný nástroj ponúka pekný výber predkonfigurovaných prostredí pre zostavenie pre hlavné jazyky (Java, Python, Node.js, Ruby, Go, Android, .Net Core pre Linux) a potom výsledok pred odoslaním vyhodí do vedra S3 spustený na serveri.

Existuje prekvapivo veľké množstvo vrstiev s mierne odlišnými názvami. CodeBuild vezme vášho najnovšieho génia z CodeCommit, keď ho spustí CodePipeline, a výsledok odovzdá CodeDeploy. Ak je to na konfiguráciu príliš veľa vecí na kód, môžete prejsť priamo na program CodeStar, ktorý ponúka ďalšiu vrstvu automatizácie. Keby len existoval CodeBugEraserStar, ktorý by všetky naše chyby vymazal aj automaticky. Stojí za zmienku, že za každú z týchto vrstiev kódu technicky neplatíte. Spoločnosť Amazon vám účtuje poplatky len za výpočtové a úložné zdroje, ktoré ste pri tom použili. Nie je to úplne zadarmo, aj keď sa tak cíti.

Bitcocket Pipelines

Atlassian, vývojári populárnej rady pre sledovanie úloh, spoločnosť Jira a úložisko kódov, Bitbucket, sa rozhodli využiť svoju kontrolu nad našim pracovným tokom vytvorením Bitbucket Pipelines, nástroja na nepretržitú integráciu v cloude Bitbucket. Tajnou omáčkou je väčšia integrácia, v tomto prípade vo forme spojení medzi mechanizmom zostavenia a ďalšími nástrojmi spoločnosti Atlassian. Aspoň kozmeticky, Pipelines nie je ani samostatná vec. Je to len ďalšia možnosť ponuky pre každý projekt v Bitbucket. Ďalšia možnosť ponuky ukazuje na nasadenia a umožňuje vám zvoliť, kde sa zostavenia dostanú.

Spojenia sú požehnaním a obmedzením. Ak si vyberiete jednu zo šablón už definovaných pre hlavné jazyky (Java, JavaScript, Python, PHP, .Net atď.), Môžete svoj kód vytvoriť a nasadiť niekoľkými kliknutiami. Ak sa však odkloníte od štandardov, začnete zisťovať, že možnosti neexistujú. Atlassian skutočne podporuje trh aplikácií, ktoré sa zdajú byť zmesou grafov a webhookov do iných služieb. Najlepšia aplikácia v grafe, keď to píšem, spojí Bitbucket s Jenkinsom, pravdepodobne preto, aby urobila niečo, čo sa v stenách nedá urobiť rýchlo.

Hlavnou výhodou potrubí je rýchlosť. Atlassian vopred vytvoril väčšinu hlavných ciest od kódu po spustené nasadenia a vy môžete kráčať v stopách spoločnosti len za pár dolárov. Je ťažké porovnať náklady na používanie nástroja Bitbucket, pretože zostavenia sú cenené za pár minút, ako väčšina modelov bez servera, ale tímy často venujú zhluk inštancií na spracovanie zostavení Jenkins. Aj keď ich v noci a cez víkendy odstavíte, hodiny sa sčítavajú.

GitLab CI / CD

Jedným z najväčších konkurentov spoločnosti Atlassian je GitLab, ďalšia spoločnosť, ktorá chce zvládnuť každý krok procesu medzi prstami a bežiacim nasadením. Mechanizmy budovania, testovania a nasadenia spoločnosti GitLab sú rovnako spojené priamo s jej úložiskami Git, aby ich bolo možné spustiť na základe záväzku. Tento proces je z veľkej časti postavený na kontajneroch Docker a toto ukladanie do pamäte cache môže výrazne zjednodušiť niektoré konfiguračné práce, ktoré sa musia robiť okolo Jenkinsových zostavení.

Úlohy zostavenia môžu zacieliť na akýkoľvek jazyk, ale musí ich spustiť GitLab Runner, nástroj automatického škálovania napísaný v službe Go, ktorý je pripravený pre väčšinu platforiem. Táto flexibilita znamená, že môžete spustiť ľubovoľnú náhodnú úlohu na iných počítačoch, čo by mohlo byť užitočné pri prepracovaných architektúrach, ktoré poskytujú nielen mikroslužby.

Ceny sú zoskupené do rôznych úrovní, aby sa priblížila potreba. Napríklad skupiny zlatých úrovní získavajú všetky najlepšie funkcie, ako sú napríklad bezpečnostné panely a 50 000 minút budovania na zdieľanom klastri strojov. Za použitie vlastných strojov na časť procesu alebo na samostatné inštancie v inom cloude sa neplatí nič.

Kruh Cir

Mnoho nástrojov na kontinuálnu integráciu sa zameriava na kód, ktorý je možné vytvoriť v prostredí Linuxu. CircleCI stavia a dodáva vo svete Linuxu, ale tiež ponúka produkt, ktorý bude vytvárať aplikácie pre Android a všetko, čo vychádza z Xcode od Apple (pre iOS, MacOS, tvOS alebo watchOS). Ak pracujete v tíme, ktorý produkuje aplikácie pre tieto platformy, môžete svoj kód odovzdať a nechať CircleCI presadiť určitú testovaciu disciplínu pre všetkých rozličných geniálnych schopností vášho tímu.

Zoznamy úloh sú uvedené v súboroch YAML. CircleCI používa Docker v celej svojej viacvrstvovej sláve na konfiguráciu testovacích prostredí pre kód. Stavby sa začínajú novými nádobami, a preto sa robia všetky testy. Práce v systéme Mac fungujú na virtuálnych strojoch, ktoré majú podobne krátku životnosť. Vyhnete sa tak niektorým problémom s konfiguráciou, pretože čisté prostredie neobsahuje žiadne zvyšky. (Takže ak sú vaše problémy spôsobené pretrvávajúcim digitálnym flotsam, je to vaša chyba.)

Cena je zameraná na to, koľko CPU vaše zostavy sajú. Počet používateľov a počet archívov je obmedzený na nekonečno. Počet minút výstavby a kontajnerov vykonávajúcich túto budovu je však odmeraný. Prvý kontajner je zadarmo a môžete v ňom spustiť jedno zostavenie. Ak chcete viac paralelizmu alebo vyššiu priepustnosť, CircleCI zarobí nejaké peniaze. Používatelia počítačov Mac nezískavajú rovnaké bezplatné ponuky, existujú však úvodné plány pre kohokoľvek, kto testuje túto službu.

Travis CI

Ak vaše zostavy produkujú kód, ktorý je potrebné testovať na Windows krabiciach, potom vám Travis CI ponúka jediné zastavenie. Spoločnosť už nejaký čas ponúka možnosti pre MacOS a Linux, ale práve zaviedla možnosť pre Windows, čo uľahčuje výrobu kódu, ktorý beží na ešte väčšom počte miest.

Zoznamy úloh sú tiež vysvetlené v YAML a úlohy sú spustené v čistých virtuálnych strojoch s pomerne štandardnou konfiguráciou. Kód pre Linux získava niektoré základné verzie Ubuntu, kód pre Mac beží v jednej z tuctov kombinácií OS X a Xcode a JDK. Kód systému Windows môže nateraz skončiť iba v jednej verzii systému Windows Server (1803). Travis CI ponúka dlhý zoznam 30 jazykov a pravidlá zostavovania, ktoré sú vopred nakonfigurované a do veľkej miery pripravené na spustenie.

Cena je založená na tom, koľko súbežných úloh je možné vykonať naraz, ale neexistujú žiadne formálne obmedzenia počtu minút, ktoré môžu tieto zostavenia trvať. Je to, akoby ste dostali pevný počet vyhradených inštancií pre svoju prácu a tie sú neustále pripravené. Pre vlastnú prácu neexistujú žiadne bezplatné možnosti, ale projekty s otvoreným zdrojovým kódom sú „vždy zadarmo“ - to môže byť najjednoduchší spôsob, ako vyskúšať Travis CI.

Azure Pipelines

Ak vás zaujíma, či má moderný Microsoft prístup „Nie je tu vynájdený“, nehľadajte nič iné ako Azure Pipelines. Literatúra o predaji hovorí: „Akýkoľvek jazyk, akákoľvek platforma.“ Aj keď je to takmer určite trochu nadsázka a Azure pravdepodobne nemá čo programátorom ENIAC ponúknuť, ponúka pre váš kód popredné miesta cesty Microsoft, Linux a MacOS. Roh Apple je zameraný iba na zostavy MacOS, nie na iOS alebo tvOS alebo watchOS, ale nebudeme vyberaví. Toto je pohár, ktorý je oveľa viac ako z polovice plný.

Systém je abstraktne podobný ostatným. Existujú agenti, ktorí vykonávajú zostavenia na výrobu artefaktov. Niektoré z nich môžu byť hosťované sami, ak takáto možnosť pomôže. Zásobník plne obsahuje Dockerove kontajnery a hardvér Azure je pripravený ich za vás spustiť. Na všetky tieto podrobnosti môžete kliknúť spolu s vizuálnym dizajnérom zabudovaným do webovej stránky, alebo ich môžete špecifikovať pomocou YAML, ak uprednostňujete život vo svete príkazového riadku.

Cena je dodávaná s bezplatnou „paralelnou prácou“ s 1 800 minútami času na zostavenie. Ak chcete viac paralelizmu alebo viac času, začnete platiť. Plán obsahuje veľkorysú bezplatnú vrstvu pre projekty otvoreného zdroja, ktorá opäť zdôrazňuje vôľu spoločnosti Microsoft podieľať sa na všeobecnej komunite otvorených zdrojov. Ak však spoločnosť Microsoft zakúpením GitHubu utratí 7,5 miliárd dolárov za nákup miesta pri stole, má to zmysel. Kde bude prebiehať všetok tento kód? Spoločnosť Azure Pipelines ju rada bez problémov presunie na hardvér Azure.

$config[zx-auto] not found$config[zx-overlay] not found