Programování

CI / CD jako služba: 10 nástrojů pro nepřetržitou integraci a doručování v cloudu

Cloud a nepřetržitá integrace (CI) se přirozeně shodují. Zatímco cloud nás osvobozuje od bolesti při instalaci a údržbě fyzických serverů, nepřetržitá integrace automatizuje většinu bolesti při budování, testování a nasazování našeho kódu. Pokud si oba kladou za cíl sundat práci z ramen vývojových týmů, má smysl je pouze kombinovat a jediným krokem eliminovat ještě větší drinu.

Existuje mnoho služeb nepřetržité integrace a všechny dělají téměř totéž, alespoň v abstraktním smyslu. Začínají seznamem úkolů, jako je kompilace nebo testování, které je třeba provést, než svět ocení genialitu vašeho nového softwaru. Když zadáte řádky kódu, nástroje začnou pracovat prostřednictvím kontrolního seznamu, dokud nenarazí na překážku. Pokud zde nejsou žádné překážky, jsou všichni šťastní.

Kdokoli může použít nepřetržitou integraci pro jakýkoli projekt vývoje softwaru, ale největší výhody mají týmy, nejlépe velké týmy, které pracují na stejných blocích kódu. Nejdůkladnější implementace nepřetržité integrace vytvářejí a znovu vytvářejí kód před jeho testováním a opětovným testováním, a to vše při hledání nových chyb a nekompatibilit, které mohly být vytvořeny, když různí členové týmu zkontrolují svůj kód. Kontinuální integrační servery synchronizují práci všech programátorů a pomáhají týmu detekovat jakékoli problémy.

Některé seznamy úkolů pro server CI končí s testy, ale v poslední době stále více týmů rozšiřuje seznamy tak, aby zahrnovaly nasazení nového kódu, což je proces, který se někdy nazývá „nepřetržité nasazení“. Zcela automatizované nasazení některé lidi znervózňuje a často do procesu přidají nějaké manuální pauzy. Přidání trochu odpovědnosti a lidské jistoty jim umožní trochu se uvolnit. Tento hybridní přístup budou nazývat „nepřetržitým doručováním“, protože kód doručuje do některého stagingového nebo testovacího klastru, kde bude čekat, až člověk konečně posune produkci.

Pokud je nepřetržitá integrace skvělá v serverové místnosti v hale, může to být ještě lepší v cloudu, kde jsou skvělé příležitosti pro rychlejší doručení a vyšší efektivitu. V nejlepších případech mohou mraky rozdělit práci a spouštět úkoly paralelně. Služby začínají velkým fondem hardwaru a poté je sdílejí mezi mnoha týmy. Dokud všichni nebudou tlačit na svůj kód současně, budou sestavení a testy probíhat mnohem rychleji. Nákup stejného obrovského stojanu s hardwarem pro chvíle, kdy vývojáři chtějí provést všechny testy, je prohibitivní, ale pokud týmy sdílejí stojánek, mohou si všechny užít výbuchy rychlosti.

Existují však nebezpečí a starosti a největší může být ztráta kontroly. Všechny cloudové služby vyžadují předání vašeho kódu třetí straně, což je volba, která se může pro některé cítit osvobozující, ale pro ostatní děsivá. Všechny cloudové služby se velmi snaží zdůraznit zabezpečení, ale nějak se cítí jinak, když je kód pod vaší vlastní střechou.

Kromě široké podpory pro všechny hlavní jazyky pokrývají tyto služby překvapivý počet vedlejších a více než několik skutečně zvláštních a neobvyklých. To je spíše výsledek dobrých architektonických rozhodnutí na začátku, než jakékoli hrdinské úsilí vývojářů. Seznamy úkolů jsou téměř vždy zakódovány jako příkazy pro nějaký shell nebo příkazový řádek, takže nástroje pro nepřetržitou integraci do značné míry vydávají příkazy, dokud se seznam nevyčerpá nebo se neobjeví nějaký nepřekonatelný překážka. Některé z jazyků, jako je Java, nabízejí sofistikovanější možnosti, ale nástroje většinou zvládnou vše, co můžete udělat pomocí příkazového řádku.

Tady je 10 různých možností nepřetržité integrace v cloudu.

Cloudové včely

CloudBees Core začal s Jenkinsem, známým projektem open source pro nepřetržitou integraci, poté přidal testování, podporu a jistotu, že kód bude právě spuštěn. Společnost prozkoumala všechny experimentální doplňky, přidala několik vlastních a poté vyleštila ty správné, aby fungovaly podle očekávání, když je potřebujete.

CloudBees stále zaměstnává 80 procent vývojového týmu Jenkins a často přispívá kódem do projektu open source, takže si můžete být jisti, že této dominantní platformě dobře rozumí. Abychom to urychlili, CloudBees také přidal rozsáhlou paralelizaci a instrumentaci pro sledování vašeho vývojového procesu.

CloudBees nabízí řadu cenových bodů, které se pohybují od bezplatných úrovní až po „startovací sady“ za celý rok služby. Společnost také vydává podporu pro Jenkins pro každého, kdo potřebuje pomoc s tímto nástrojem, ale nepotřebuje nebo nechce cloud computing.

AWS CodePipeline

Nástroj Amazon pro nepřetržitou integraci a nasazení, AWS CodePipeline, je optimalizován pro doručování kódu na server AWS, přičemž je stále otevřen propracovanějším cestám pro váš kód a data. Základní nástroj nabízí pěkný výběr předkonfigurovaných prostředí pro sestavení pro hlavní jazyky (Java, Python, Node.js, Ruby, Go, Android, .Net Core pro Linux) a poté před odesláním vyhodí výsledek do kbelíku S3 vypnout na server a spustit jej.

Existuje překvapivě velké množství vrstev s mírně odlišnými názvy. CodeBuild vezme váš nejnovější génius z CodeCommit, když je spuštěn CodePipeline, a poté předá výsledek CodeDeploy. Pokud je to na konfigurování příliš mnoho věcí v kódu, můžete přejít přímo na CodeStar, který nabízí další vrstvu automatizace. Kéž by existoval CodeBugEraserStar, který by také automaticky vymazal všechny naše chyby. Stojí za zmínku, že za žádnou z těchto vrstev kódu technicky neplatíte. Amazon vám účtuje poplatky pouze za výpočetní a úložné zdroje, které se při tom používají. Není to úplně zadarmo, i když se na to opravdu cítí.

Bitbucket Pipelines

Atlassian, vývojáři populární desky pro sledování úloh, Jira a úložiště kódu, Bitbucket, se rozhodli využít své pozice v našem pracovním toku vytvořením Bitbucket Pipelines, nástroje pro nepřetržitou integraci v cloudu Bitbucket. Tajnou omáčkou je větší integrace, v tomto případě ve formě spojení mezi mechanismem sestavení a dalšími nástroji společnosti Atlassian. Alespoň kosmeticky, Pipelines není ani samostatná věc. Je to jen další možnost nabídky pro každý projekt v Bitbucketu. Další možnost nabídky ukazuje na nasazení a umožňuje vám vybrat, kde skončí sestavení.

Spojení jsou požehnáním a omezením. Pokud zvolíte jednu ze šablon již definovaných pro hlavní jazyky (Java, JavaScript, Python, PHP, .Net atd.), Můžete svůj kód vytvářet a nasadit několika kliknutími. Pokud se však odkloníte od standardů, začnete zjišťovat, že možnosti zde nejsou. Atlassian podporuje trh aplikací, které se zdají být kombinací grafů a webhooků do jiných služeb. Nejlepší aplikace v grafu, jak to píšu, spojí Bitbucket s Jenkinsem, pravděpodobně proto, aby udělal něco, co se uvnitř zdí nedá udělat rychle.

Hlavní výhodou potrubí je rychlost. Atlassian předimenzoval většinu hlavních cest od kódu po běh nasazení a můžete se vydat ve stopách společnosti za pouhých pár dolarů. Je těžké porovnat náklady na používání Bitbucketu, protože sestavení jsou oceněna během několika minut, jako většina modelů bez serveru, ale týmy často věnují klastr instancí pro zpracování sestavení Jenkins. I když je zavřete v noci a o víkendech, hodiny se sčítají.

GitLab CI / CD

Jedním z největších konkurentů společnosti Atlassian je GitLab, další společnost, která chce zvládnout každý krok procesu mezi prsty a spuštěním nasazení. Mechanismy sestavení, testování a nasazení GitLabu jsou rovněž připojeny přímo k jeho úložištím Git, aby je bylo možné spustit na základě závazku. Proces je do značné míry postaven na kontejnerech Docker a toto ukládání do mezipaměti může výrazně zjednodušit některé konfigurační práce, které je třeba provést kolem sestavení Jenkins.

Úlohy sestavení mohou cílit na jakýkoli jazyk, ale musí je spustit GitLab Runner, nástroj automatického škálování napsaný v Go, který je připraven pro většinu platforem. Tato flexibilita znamená, že můžete spustit libovolnou náhodnou úlohu na jiných počítačích, což je něco, co by mohlo být užitečné s propracovanými architekturami, které dělají více než jen poskytování mikroslužeb.

Ceny jsou seskupeny s různými úrovněmi, aby se přiblížila potřeba. Například skupiny zlatých úrovní získávají všechny nejlepší funkce, jako jsou řídicí panely zabezpečení a 50 000 minut budování na sdíleném clusteru strojů. Za použití vlastních strojů pro část procesu nebo samostatné instance v jiném cloudu se neúčtují žádné poplatky.

CircleCI

Mnoho nástrojů pro kontinuální integraci se zaměřuje na kód, který lze vytvořit v prostředí Linuxu. CircleCI staví a dodává ve světě Linuxu, ale také nabízí produkt, který bude vytvářet aplikace pro Android a vše, co vychází z Xcode společnosti Apple (pro iOS, MacOS, tvOS nebo watchOS). Pokud pracujete v týmu, který vyrábí aplikace pro tyto platformy, můžete odevzdat svůj kód a nechat CircleCI vynutit určitou testovací disciplínu na všech odlišných genialitách vašeho týmu.

Seznam úkolů je uveden v souborech YAML. CircleCI používá Docker v celé své vícevrstvé slávě ke konfiguraci testovacích prostředí pro kód. Sestavení začínají s čerstvými kontejnery, stejně jako všechny testy. Práce pro Mac běží ve virtuálních strojích, které mají podobně krátkou životnost. Tím se vyhnete některým problémům s konfigurací, protože čisté prostředí nemá žádné zbytky bitů. (Takže pokud jsou vaše problémy způsobeny přetrvávajícím digitálním flotsamem, je to vaše chyba.)

Cena je zaměřena na to, kolik CPU vaše sestavení saje. Počet uživatelů a počet úložišť je omezen na nekonečno. Počet minut sestavení a kontejnerů provádějících tuto budovu jsou však měřeny. První kontejner je zdarma a můžete v něm spustit jedno sestavení. Pokud chcete více paralelismu nebo větší propustnost, CircleCI vydělá nějaké peníze. Uživatelé počítačů Mac nezískávají stejnou bezplatnou nabídku, ale pro každého, kdo tuto službu testuje, existují úvodní plány.

Travis CI

Pokud vaše sestavení produkují kód, který je třeba otestovat na krabicích Windows, pak vám Travis CI nabízí jedinou zastávku. Společnost již nějakou dobu nabízí možnosti pro MacOS a Linux, ale právě zavedla možnost Windows, což usnadňuje výrobu kódu, který běží na ještě více místech.

Seznamy úloh jsou také vysvětleny v YAML a úlohy jsou spouštěny v čistých virtuálních počítačích s poměrně standardní konfigurací. Linuxový kód získá několik základních verzí Ubuntu, kód pro Mac běží v jedné z desítek kombinací OS X a Xcode a JDK. Kód systému Windows může zatím skončit pouze v jedné verzi systému Windows Server (1803). Travis CI nabízí dlouhý seznam 30 jazyků a pravidla sestavení, která jsou předem nakonfigurovaná a do značné míry připravená ke spuštění.

Cena je založena na tom, kolik souběžných úloh lze provést najednou, ale neexistují žádná formální omezení počtu minut, které mohou tato sestavení trvat. Je to, jako byste dostali pevný počet vyhrazených instancí pro svou práci a jsou neustále připraveni. Pro proprietární práci neexistují žádné bezplatné možnosti, ale open source projekty jsou „vždy zdarma“ - to může být nejjednodušší způsob, jak Travis CI vyzkoušet.

Azure Pipelines

Pokud vás zajímá, zda má moderní Microsoft přístup „Není zde vynalezeno“, nehledejte nic jiného než Azure Pipelines. Prodejní literatura říká: „Libovolný jazyk, libovolná platforma.“ I když je to téměř jistě trochu nadsázka a Azure pravděpodobně nemá co nabídnout programátorům ENIAC, nabízí pro váš kód prominentně cesty Microsoft, Linux a MacOS. Roh Apple je zaměřen pouze na sestavení pro MacOS, nikoli na iOS nebo tvOS nebo watchOS, ale nebudeme vybíraví. Toto je sklenice, která je mnohem více než z poloviny plná.

V abstraktu je systém podobný ostatním. Existují agenti, kteří provádějí sestavení a vytvářejí artefakty. Některé z nich lze hostovat sami, pokud tato možnost pomůže. Zásobník plně zahrnuje kontejnery Dockeru a hardware Azure je připraven je spustit za vás. Všechny tyto podrobnosti lze kliknout společně s vizuálním designérem zabudovaným do webové stránky, nebo zadat pomocí YAML, pokud dáváte přednost životu ve světě příkazového řádku.

Cena je dodávána s „paralelní prací“ zdarma s dobou sestavení 1800 minut. Pokud chcete více paralelismu nebo více času, začnete platit. Tento plán zahrnuje velkorysou bezplatnou vrstvu pro projekty open source, což opět zdůrazňuje touhu společnosti Microsoft podílet se na obecné komunitě open source. Pokud však Microsoft koupí GitHubu utratí 7,5 miliardy dolarů za nákup místa u stolu, má to smysl. Kde bude celý tento kód spuštěn? Azure Pipelines ji rádi hladce přesunou na hardware Azure.

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