Programiranje

CI / CD kot storitev: 10 orodij za nenehno integracijo in dostavo v oblaku

Oblak in nenehna integracija (CI) se naravno ujemata. Medtem ko nas oblak osvobaja namestitve in vzdrževanja fizičnih strežnikov, nenehna integracija avtomatizira velik del bolečine pri gradnji, testiranju in uvajanju naše kode. Če je cilj obeh odstraniti delo z ramen razvojnih skupin, jih je smiselno združiti in z enim korakom odpraviti še več težav.

Storitev neprekinjene integracije je veliko in vse počnejo skoraj isto, vsaj v abstraktnem smislu. Začnejo se s seznamom nalog, kot je sestavljanje ali preizkušanje, ki jih je treba opraviti, preden svet lahko ceni genija v vaši novi programski opremi. Ko vnesete vrstice kode, začnejo orodja delovati prek kontrolnega seznama, dokler ne naletijo na zaporo. Če ni cestnih zapor, so vsi zadovoljni.

Vsakdo lahko uporablja nenehno integracijo za kateri koli projekt razvoja programske opreme, toda največje prednosti imajo ekipe, po možnosti velike ekipe, ki delajo na istih, povezanih blokih kode. Najbolj temeljite izvedbe neprekinjene integracije gradijo in obnavljajo kodo pred preskušanjem in ponovnim preskušanjem, vse v iskanju novih napak in nezdružljivosti, ki so morda nastale, ko različni člani ekipe preverjajo svojo kodo. Strežniki za nenehno integracijo sinhronizirajo delo vseh programerjev in pomagajo skupini zaznati morebitne težave.

Nekateri seznami nalog za strežnik CI se končajo s testi, v zadnjem času pa vse več skupin razširja sezname, tako da vključujejo uvajanje nove kode, postopek, ki ga včasih imenujejo "neprekinjeno uvajanje". Popolnoma avtomatizirana uvedba nekatere ljudi spravi v živce in pogosto bodo med postopkom dodali nekaj ročnih premorov. Če jim dodamo malo odgovornosti in človeške varnosti, se lahko nekoliko sprostijo. Temu hibridnemu pristopu bodo rekli "neprekinjena dostava", ker dostavi kodo nekaterim uprizoritvenim ali preskusnim skupinam, kjer bo čakal, da človek končno potisne v proizvodnjo.

Če je neprekinjena integracija odlična v strežniški sobi po hodniku, je lahko še boljša v oblaku, kjer so velike možnosti za hitrejšo dostavo in večjo učinkovitost. V najboljših primerih lahko oblaki razdelijo delo in vzporedno izvajajo naloge. Storitve se začnejo z velikim naborom strojne opreme in jo nato delijo med številne ekipe. Dokler vsi ne pritiskajo istočasno na svojo kodo, bodo gradnje in testi potekali veliko hitreje. Nakup istega velikega ohišja strojne opreme samo za trenutke, ko želijo razvijalci izvesti vse teste, je previsoko, če pa si ekipe delijo omaro, lahko vsi uživajo v hitrih hitrostih.

Kljub temu obstajajo nevarnosti in skrbi, največja pa je lahko izguba nadzora. Vse storitve v oblaku zahtevajo, da kodo predate tretji osebi, kar je za nekatere morda osvobajajoče, za druge pa zastrašujoče. Vse storitve v oblaku se trudijo poudariti varnost, vendar je nekako drugače, ko je koda pod vašo streho.

Poleg široke podpore vsem glavnim jezikom te storitve pokrivajo presenetljivo število manjših in več kot nekaj resnično nenavadnih in nenavadnih. To je bolj rezultat dobrih arhitekturnih odločitev na začetku kot kakršnega koli junaškega prizadevanja razvijalcev. Seznami nalog so skoraj vedno kodirani kot ukazi za neko lupino ali ukazno vrstico, zato orodja za neprekinjeno integracijo še naprej izdajajo ukaze, dokler seznam ni izčrpan ali se pojavi kakšna nepremostljiva ovira. Nekateri jeziki, kot je Java, ponujajo bolj izpopolnjene možnosti, vendar lahko orodja večinoma dosežejo vse, kar lahko storite z ukazno vrstico.

Tu je 10 različnih možnosti za neprekinjeno integracijo v oblaku.

CloudBees

CloudBees Core je začel z Jenkinsom, znanim odprtokodnim projektom za nenehno integracijo, nato pa dodal testiranje, podporo in nekaj zagotovila, da bo koda pravkar delovala. Podjetje je izločilo vse poskusne vtičnike, dodalo nekaj svojih in nato poliralo prave, tako da delujejo po pričakovanjih, ko jih potrebujete.

CloudBees še vedno zaposluje 80 odstotkov Jenkinsove razvojne ekipe in pogosto prispevajo kodo k odprtokodnemu projektu, zato ste lahko prepričani, da dobro razumejo to prevladujočo platformo. Za pospešitev stvari je CloudBees dodal tudi obsežno paralelizacijo in instrumentacijo za sledenje vašemu razvojnemu procesu.

CloudBees ponuja različne cenovne točke, ki segajo od brezplačnih stopenj do "začetnih kompletov" za celo leto storitve. Podjetje izkorišča tudi podporo za Jenkinsa za vse, ki potrebujejo pomoč pri orodju, vendar ne potrebujejo ali želijo računalništva v oblaku.

AWS CodePipeline

Amazonovo orodje za neprekinjeno integracijo in uvajanje, AWS CodePipeline, je optimizirano za dostavo kode strežniku AWS, hkrati pa je še vedno odprto za bolj dodelane poti za vašo kodo in podatke. Osnovno orodje ponuja lep izbor vnaprej konfiguriranih gradbenih okolij za glavne jezike (Java, Python, Node.js, Ruby, Go, Android, .Net Core za Linux), nato pa rezultat pošlje v vedro S3, preden ga pošlje na strežnik, da se začne izvajati.

Presenetljivo veliko je slojev z nekoliko drugačnimi imeni. CodeBuild zgrabi vašega najnovejšega genija iz CodeCommit-a, ko ga sproži CodePipeline, nato pa rezultat preda CodeDeployu. Če je to preveč stvari Code, ki jih lahko konfigurirate, lahko skočite naravnost na CodeStar, ki ponuja še en sloj avtomatizacije. Ko bi le obstajal CodeBugEraserStar, ki bi tudi samodejno izbrisal vse naše napake. Omeniti velja, da tehnično ne plačate nobene od teh plasti Code. Amazon vam zaračuna samo računske vire in vire za shranjevanje, ki so bili uporabljeni ob poti. Ni ravno brezplačno, čeprav se mi zdi.

Bitbucket cevovodi

Atlassian, razvijalci priljubljene deske za sledenje opravilom Jira in repozitorija kod, Bitbucket, so se odločili, da bodo izkoristili naš potek dela, tako da bodo ustvarili Bitbucket Pipelines, orodje za stalno integracijo v oblaku Bitbucket. Skrivna omaka je večja integracija, v tem primeru v obliki povezav med mehanizmom gradnje in drugimi orodji Atlassian. Vsaj kozmetično Pipelines niti ni ločena stvar. To je samo še ena možnost menija za vsak projekt v Bitbucketu. Druga možnost menija kaže na razmestitve in vam omogoča, da izberete, kje bodo končane gradnje.

Povezave so blagoslov in omejitev. Če izberete eno od predlog, ki so že določene za glavne jezike (Java, JavaScript, Python, PHP, .Net itd.), Lahko svojo kodo sestavite in postavite v nekaj kliki. Če pa se oddaljite od standardov, boste začeli ugotavljati, da možnosti ni. Atlassian resnično spodbuja trg aplikacij, ki se zdijo mešanica grafikonov in spletnih kavljev za druge storitve. Zgornja aplikacija na lestvici, ko to pišem, bo povezala Bitbucket z Jenkinsom, verjetno zato, da naredi nekaj, česar znotraj sten ni mogoče hitro storiti.

Glavna prednost cevovodov je hitrost. Atlassian je vnaprej načrtoval večino glavnih poti od kode do tekočih uvedb in za nekaj dolarjev lahko sledite stopinjam podjetja. Težko je primerjati stroške uporabe Bitbucket-a, ker so gradnje cene v nekaj minutah, tako kot večina brezstrežniških modelov, toda skupine pogosto posvetijo skupino primerov za obdelavo zgradb Jenkins. Tudi če jih zaprete ponoči in vikendi, se ure seštevajo.

GitLab CI / CD

Eden največjih konkurentov Atlassianu je GitLab, drugo podjetje, ki želi obvladati vsak korak postopka med prsti in tekočo uvajanjem. Mehanizmi za izdelavo, preizkušanje in uvajanje GitLab so prav tako neposredno povezani s svojimi skladišči Git, tako da jih je mogoče sprožiti ob prevzemu obveznosti. Postopek je večinoma zgrajen okoli Dockerjevih vsebnikov in to predpomnjenje lahko močno poenostavi nekaj konfiguracijskega dela, ki ga je treba opraviti okoli zgradb Jenkins.

Naloge gradnje lahko ciljajo na kateri koli jezik, vendar jih mora sprožiti GitLab Runner, orodje za samodejno skaliranje, napisano v programu Go, ki je pripravljeno za večino platform. Ta prilagodljivost pomeni, da lahko sprožite katero koli naključno opravilo na drugih strojih, kar bi lahko bilo koristno pri dodelanih arhitekturah, ki ponujajo več kot le mikro storitve.

Cene so povezane z različnimi stopnjami, da se približajo potrebam. Skupine zlate stopnje, na primer, dobijo vse najboljše funkcije, kot so varnostne nadzorne plošče in 50.000 minut gradnje na skupni gruči strojev. Uporaba lastnih strojev za del postopka ali ločenih primerkov v kakšnem drugem oblaku ni brezplačna.

CircleCI

Številna orodja za neprekinjeno integracijo se osredotočajo na kodo, ki jo je mogoče zgraditi v okolju Linux. CircleCI gradi in ponuja v svetu Linuxa, ponuja pa tudi izdelek, ki bo zgradil aplikacije za Android in vse, kar izhaja iz Applove Xcode (za iOS, MacOS, tvOS ali watchOS). Če delate v skupini, ki proizvaja aplikacije za te platforme, lahko odobrite svojo kodo in dovolite, da CircleCI uveljavi določeno preizkusno disciplino za vse divergentne genije vaše ekipe.

Seznami nalog so zapisani v datotekah YAML. CircleCI z Dockerjem v vsej svoji večplastni slavi konfigurira testna okolja za kodo. Gradnje se začnejo s svežimi posodami, prav tako vsi preskusi. Delo Mac deluje v navideznih strojih s podobno kratko življenjsko dobo. S tem se izognemo nekaterim težavam s konfiguracijo, ker v čistih okoljih ne ostane nobenih ostankov. (Torej, če vaše težave povzroča dolgotrajen digitalni flotsam, to je vaša krivda.)

Cene so osredotočene na to, koliko CPU sesa vaše gradnje. Število uporabnikov in število skladišč je omejeno na neskončnost. Število minut izdelave in zabojnikov, ki izvajajo to zgradbo, pa se izmeri. Prvi vsebnik je brezplačen in v njem lahko zaženete eno gradnjo. Če želite več vzporednosti ali več pretovora, CircleCI zasluži nekaj denarja. Uporabniki Maca ne dobijo enake brezplačne ponudbe, vendar obstajajo uvodni načrti za vsakogar, ki preizkuša storitev.

Travis CI

Če vaše gradnje proizvajajo kodo, ki jo je treba preizkusiti na oknih s sistemom Windows, potem vam Travis CI ponuja en sam postanek. Podjetje že nekaj časa ponuja možnosti MacOS in Linux, vendar je pravkar uvedlo možnost Windows, s čimer je enostavneje izdelati kodo, ki deluje na še več mestih.

Seznam opravil je prav tako zapisan v YAML, opravila pa se izvajajo v čistih navideznih strojih s precej standardno konfiguracijo. Koda Linux dobi nekaj osnovnih različic Ubuntuja, koda Mac pa deluje v eni od ducata kombinacij OS X in Xcode ter JDK. Koda sistema Windows za zdaj lahko konča samo v eni različici sistema Windows Server (1803). Travis CI ponuja dolg seznam 30 jezikov in pravil gradnje, ki so vnaprej konfigurirana in v veliki meri pripravljena na zagon.

Cene temeljijo na številu sočasnih opravil naenkrat, vendar ni formalnih omejitev števila minut, ki jih lahko porabijo te gradnje. Kot da dobite določeno število namenskih primerkov za svoje delo in so ves čas pripravljeni. Prostih del za lastniško delo ni, toda odprtokodni projekti so "vedno brezplačni" - tako da je to lahko najpreprostejši način, da preizkusite Travis CI.

Azure cevovodi

Če se sprašujete, ali ima sodobni Microsoft stališče »Tu ni izumljeno«, ne glejte dlje od Azure Pipelines. V prodajni literaturi piše: "Kateri koli jezik, katera koli platforma." Čeprav je to skoraj zagotovo nekoliko hiperbola in Azure verjetno nima kaj veliko za ponuditi programerjem ENIAC, pa za vašo kodo vidno ponuja poti Microsoft, Linux in MacOS. Appleov kotiček cilja samo na zgradbe MacOS, ne pa na iOS ali tvOS ali watchOS, vendar ne bodimo izbirčni. To je kozarec, ki je veliko več kot pol poln.

Povzeto je sistem podoben ostalim. Obstajajo agenti, ki izvajajo gradnje za izdelavo artefaktov. Nekatere od njih lahko gostite sami, če vam ta možnost pomaga. Sklop v celoti zajema vsebnike Docker in strojna oprema Azure je pripravljena, da jih zažene za vas. Vse te podrobnosti lahko kliknete skupaj z vizualnim oblikovalcem, vgrajenim v spletno stran, ali določite z YAML, če želite živeti v svetu ukazne vrstice.

Cene prihajajo z brezplačnim "vzporednim delom" z 1800 minutami časa izdelave. Če želite več vzporednosti ali več grajenega časa, začnete plačevati. Načrt vključuje velikodušno brezplačno raven za odprtokodne projekte, ki ponovno poudarja Microsoftovo željo po sodelovanju v splošni odprtokodni skupnosti. Če pa bo Microsoft za nakup sedeža za mizo z nakupom GitHub zapravil 7,5 milijarde dolarjev, je to povsem smiselno. Kam bo tekla vsa ta koda? Azure Pipelines ga bo z veseljem gladko preselil na strojno opremo Azure.

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