Programavimas

CI / CD kaip paslauga: 10 įrankių nuolatiniam integravimui ir pristatymui debesyje

Debesis ir nuolatinė integracija (PI) yra natūralus atitikimas. Nors debesis mus išlaisvina nuo skausmo diegiant ir prižiūrint fizinius serverius, nuolatinė integracija automatizuoja didžiąją dalį skausmo kuriant, testuojant ir diegiant mūsų kodą. Jei abiem siekiama atitraukti darbą nuo kūrėjų komandų pečių, yra prasminga juos tik sujungti ir pašalinti dar daugiau nemalonumų vienu žingsniu.

Yra daugybė nuolatinės integracijos paslaugų ir jos visos daro tą patį, bent jau abstrakčia prasme. Jie prasideda užduočių, tokių kaip sudarymas ar testavimas, sąrašą, kurį reikia atlikti, kad pasaulis galėtų įvertinti jūsų naujos programinės įrangos genialumą. Kai priskiriate kodo eilutes, įrankiai pradeda veikti per kontrolinį sąrašą, kol jie patenka į kliūtį. Jei nėra kliūčių, visi džiaugiasi.

Bet kuris bet kurio programinės įrangos kūrimo projektas gali naudoti nuolatinę integraciją, tačiau didžiausi privalumai yra komandoms, pageidautina didelėms komandoms, kurios dirba su tais pačiais, tarpusavyje sujungtais kodo blokais. Kruopščiausias nuolatinės integracijos diegimas sukuria ir atkuria kodą prieš jį išbandant ir bandant iš naujo, ieškant naujų klaidų ir nesuderinamumų, kurie galėjo būti sukurti, kai skirtingi komandos nariai tikrina savo kodą. Nuolatiniai integravimo serveriai sinchronizuoja visų programuotojų darbą ir padeda komandai aptikti visas problemas.

Kai kurie KI serverio užduočių sąrašai baigiasi bandymais, tačiau pastaruoju metu vis daugiau komandų praplečia sąrašus, įtraukdami naująjį kodą, kuris kartais vadinamas „nuolatiniu diegimu“. Visiškai automatizuotas diegimas kai kuriuos žmones jaudina ir jie dažnai prideda keletą rankinių pauzių. Pridėjus šiek tiek atskaitomybės ir žmogaus užtikrinimo, jie gali šiek tiek atsipalaiduoti. Šį hibridinį metodą jie vadins „nuolatiniu pristatymu“, nes jis perduoda kodą tam tikram etapų ar bandymų klasteriui, kur jis lauks, kol žmogus padarys paskutinį postūmį gamybai.

Jei nuolatinė integracija yra puiki serverio kambaryje koridoriuje, tai gali būti dar geriau debesyje, kur yra puikios greitesnio pristatymo ir didesnio efektyvumo galimybės. Geriausiais atvejais debesys gali padalinti darbą ir vykdyti užduotis lygiagrečiai. Paslaugos prasideda dideliu aparatinės įrangos baseinu ir dalijasi ja tarp daugelio komandų. Kol visi nespaus savo kodo tuo pačiu metu, kūrimas ir bandymai vyks daug greičiau. Įsigyti tą patį didžiulį aparatūros paketą tik tiems momentams, kai kūrėjai nori atlikti visus bandymus, yra draudžiama, tačiau jei komandos dalijasi stelažu, jos visos gali mėgautis greičio pliūpsniais.

Vis dėlto yra pavojų ir rūpesčių, o didžiausias gali būti kontrolės praradimas. Visoms debesijos paslaugoms reikia perduoti kodą trečiajai šaliai - tai pasirinkimas, kuris vieniems gali atrodyti išlaisvinantis, bet kitiems bauginantis. Visos debesų paslaugos labai stengiasi pabrėžti saugumą, tačiau kažkaip kitaip atrodo, kai kodas yra po tavo paties stogu.

Be plačios paramos visoms pagrindinėms kalboms, šios paslaugos apima stebėtinai daug mažų kalbų ir daugiau nei keletą tikrai keistų ir neįprastų kalbų. Tai daugiau gerų architektūrinių sprendimų pradžioje rezultatas, nei bet kokios didvyriškos kūrėjų pastangos. Užduočių sąrašai beveik visada yra užkoduoti kaip kai kurios apvalkalo ar komandinės eilutės komandos, todėl nepertraukiamo integravimo įrankiai beveik išduoda komandas tol, kol sąrašas baigiasi arba atsiranda neįveikiama kliūtis. Kai kurios kalbos, pvz., „Java“, siūlo sudėtingesnes parinktis, tačiau dažniausiai įrankiai gali atlikti viską, ką galite padaryti naudodami komandinę eilutę.

Čia yra 10 skirtingų variantų, kaip atlikti nuolatinę integraciją debesyje.

Debesų bitės

„CloudBees Core“ pradėjo nuo gerai žinomo atviro kodo nuolatinio integravimo projekto „Jenkins“, tada pridėjo testavimą, palaikymą ir tam tikrą užtikrinimą, kad kodas tiesiog veiks. Bendrovė pašalino visus eksperimentinius įskiepius, pridėjo keletą savo ir tada nugludino tinkamus, kad jie veiktų taip, kaip tikėtasi, kai jums jų reikia.

„CloudBees“ vis dar dirba 80 procentų „Jenkins“ kūrėjų komandos ir jie dažnai prisideda prie atvirojo kodo projekto, todėl galite būti tikri, kad jie gerai suprato šią dominuojančią platformą. Norėdami pagreitinti reikalus, „CloudBees“ taip pat pridėjo platų lygiagretinimą ir instrumentus, kad galėtų stebėti jūsų kūrimo procesą.

„CloudBees“ siūlo įvairius kainų taškus, kurie svyruoja nuo nemokamų pakopų iki „pradinių rinkinių“ už visus paslaugos metus. Bendrovė taip pat nutraukia „Jenkins“ palaikymą visiems, kuriems reikia pagalbos naudojant šį įrankį, tačiau nereikia ar nenori debesų kompiuterijos.

AWS „CodePipeline“

„Amazon“ nuolatinės integracijos ir diegimo įrankis „AWS CodePipeline“ yra optimizuotas kodui pristatyti į AWS serverį, tačiau vis dar yra atviresnis sudėtingesniems jūsų kodo ir duomenų keliams. Pagrindinis įrankis siūlo puikų iš anksto sukonfigūruotų pagrindinių kalbų („Java“, „Python“, „Node.js“, „Ruby“, „Go“, „Android“, „Linux“ „Linux“) sukūrimo aplinkų pasirinkimą, o tada prieš siųsdamas rezultatą iškelia į S3 grupę. išjungti serverį, kad pradėtumėte veikti.

Yra stebėtinai daug sluoksnių, kurių pavadinimai šiek tiek skirtingi. „CodeBuild“ paima jūsų naujausią genialumą iš „CodeCommit“, kai jį suaktyvina „CodePipeline“, tada perduoda rezultatą „CodeDeploy“. Jei tai yra per daug „Code“ dalykų, kuriuos galite konfigūruoti, galite pereiti tiesiai į „CodeStar“, kuris siūlo dar vieną automatikos sluoksnį. Jei tik būtų „CodeBugEraserStar“, kuris taip pat automatiškai pašalintų visas mūsų klaidas. Verta paminėti, kad techniškai nemokate nė vieno iš šių „Code“ sluoksnių. „Amazon“ atsiskaito tik už kelyje naudojamus skaičiavimo ir saugojimo išteklius. Tai nėra visiškai nemokama, nors ir jaučiasi.

„Bitbucket“ vamzdynai

„Atlassian“, populiarios darbo stebėjimo lentos „Jira“ ir kodų saugyklos „Bitbucket“ kūrėjai, nusprendė pasinaudoti mūsų darbo eiga, sukurdami „Bitbucket Pipelines“ - nuolatinį integravimo įrankį „Bitbucket“ debesyje. Slaptas padažas yra daugiau integracijos, šiuo atveju sąsajų tarp kūrimo mechanizmo ir kitų „Atlassian“ įrankių pavidalu. Bent jau kosmetikos požiūriu, vamzdynai nėra net atskiras dalykas. Tai tik dar viena meniu parinktis kiekvienam „Bitbucket“ projektui. Kita meniu parinktis nurodo diegimus, leidžiančius pasirinkti, kur baigsis kaupiniai.

Ryšiai yra palaima ir apribojimas. Jei pasirinksite vieną iš šablonų, jau apibrėžtų pagrindinėms kalboms („Java“, „JavaScript“, „Python“, PHP, .Net ir kt.), Galite sukurti ir įdiegti savo kodą keliais paspaudimais. Bet jei atsiribosite nuo standartų, pradėsite pastebėti, kad variantų nėra. „Atlassian“ iš tiesų skatina rinką programų, kurios, atrodo, yra diagramų ir internetinių kabliukų mišinys į kitas paslaugas. Viršutinė diagramos programa, kai aš tai rašau, sujungs „Bitbucket“ su „Jenkins“, tikriausiai norėdamas padaryti tai, ko negalima greitai padaryti sienų viduje.

Pagrindinis vamzdynų pranašumas yra greitis. „Atlassian“ iš anksto sukonstravo daugumą pagrindinių kelių nuo kodo iki vykdomų diegimų, o įmonės pėdomis galite sekti vos už kelis dolerius. Sunku palyginti „Bitbucket“ naudojimo išlaidas, nes versijų kaina kainuoja per kelias minutes, kaip ir dauguma serverių neturinčių modelių, tačiau „Jenkins“ kūriniams tvarkyti komandos dažnai skiria egzempliorių grupę. Net jei jas uždarysite naktimis ir savaitgaliais, valandos pridedamos.

„GitLab CI / CD“

Viena didžiausių „Atlassian“ konkurentų yra „GitLab“, kita įmonė, norinti kiekvieną proceso žingsnį atlikti tarp pirštų ir vykdant diegimą. „GitLab“ kūrimo, testavimo ir diegimo mechanizmai taip pat yra tiesiogiai prijungti prie „Git“ saugyklų, kad juos būtų galima suaktyvinti. Procesas daugiausia susijęs su „Docker“ konteineriais ir šis talpinimas gali labai supaprastinti kai kuriuos konfigūravimo darbus, kurie turi būti atliekami aplink „Jenkins“ versijas.

Kūrimo užduotys gali būti taikomos bet kuriai kalbai, tačiau jas turi suaktyvinti „GitLab Runner“ - „Go“ parašytas automatinio mastelio keitimo įrankis, paruoštas daugumai platformų. Šis lankstumas reiškia, kad galite suaktyvinti bet kokią atsitiktinę užduotį kitose mašinose, o tai gali būti naudinga naudojant sudėtingas architektūras, kurios teikia ne tik mikropaslaugas.

Kainodara yra susieta su įvairiais lygiais, kad būtų galima suderinti poreikį. Pavyzdžiui, aukso pakopos grupės gauna visas geriausias savybes, tokias kaip saugos informacijos suvestinės ir 50 000 minučių kūrimo ant bendro mašinų klasterio. Už savo mašinų naudojimą proceso daliai ar atskiriems egzemplioriams kitame debesyje nereikia mokėti.

CircleCI

Daugelis nuolatinio integravimo įrankių orientuojasi į kodą, kurį galima sukurti „Linux“ aplinkoje. „CircleCI“ kuria ir pristato „Linux“ pasaulį, tačiau taip pat siūlo produktą, kuriame bus kuriamos „Android“ programos ir viskas, kas išeina iš „Apple Xcode“ (skirta „iOS“, „MacOS“, „tvOS“ ar „watchOS“). Jei dirbate komandoje, kuri kuria programas šioms platformoms, galite priskirti kodą ir leisti „CircleCI“ vykdyti tam tikrą testavimo drausmę visam skirtingam jūsų komandos genialumui.

Užduočių sąrašai išdėstyti YAML failuose. „CircleCI“ naudoja „Docker“ visoje savo daugiasluoksnėje šlovėje, kad sukonfigūruotų kodo bandymo aplinkas. Kūrimas prasideda nuo šviežių konteinerių, taigi ir visi bandymai. „Mac“ darbas veikia virtualiose mašinose, kurių tarnavimo laikas yra panašiai trumpas. Tai leidžia išvengti kai kurių konfigūravimo problemų, nes švarioje aplinkoje nėra likusių bitų. (Taigi, jei jūsų problemas sukelia užsitęsęs skaitmeninis flotamas, gerai, tai jūsų kaltė.)

Kainodara orientuota į tai, kiek jūsų procesoriaus sugeria CPU. Vartotojų ir saugyklų skaičius yra ribojamas iki begalybės. Tačiau matuojamas šio pastato statybų minučių ir konteinerių skaičius. Pirmasis konteineris yra nemokamas ir jame galite paleisti vieną paketą. Jei norite daugiau lygiagretumo ar didesnio pralaidumo, „CircleCI“ gauna šiek tiek pinigų. „Mac“ vartotojai negauna to paties nemokamo sandorio, tačiau visiems, kurie išbando paslaugą, yra įvadiniai planai.

Travis CI

Jei jūsų versijos sukuria kodą, kurį reikia išbandyti „Windows“ dėžutėse, „Travis CI“ siūlo jums vieną sustojimą. Bendrovė kurį laiką pasiūlė „MacOS“ ir „Linux“ galimybes, tačiau ką tik įdiegė „Windows“ parinktį, todėl paprasčiau gaminti kodą, kuris veikia dar daugiau vietų.

Užduočių sąrašai taip pat išdėstyti YAML, o darbai vykdomi švariose virtualiosiose mašinose, kurių konfigūracija yra gana standartinė. „Linux“ kodas gauna keletą pagrindinių „Ubuntu“ versijų, „Mac“ kodas veikia viename iš keliolikos OS X ir Xcode bei JDK derinių. „Windows“ kodas kol kas gali būti pateikiamas tik vienoje „Windows Server“ versijoje (1803). „Travis CI“ siūlo ilgą 30 kalbų sąrašą ir kūrimo taisykles, kurios yra iš anksto sukonfigūruotos ir beveik paruoštos paleisti.

Kainodara yra pagrįsta tuo, kiek vienu metu atliekamų darbų gali atlikti vienu metu, tačiau nėra jokių oficialių apribojimų, kiek minučių gali sudaryti šie kūriniai. Panašu, kad už savo darbą gausite tam tikrą skaičių tam skirtų egzempliorių ir jie visą laiką bus paruošti. Nėra jokių nemokamų variantų nuosavam darbui, tačiau atvirojo kodo projektai yra „visada nemokami“ - tai gali būti paprasčiausias būdas išbandyti „Travis CI“.

„Azure“ vamzdynai

Jei įdomu, ar šiuolaikinė „Microsoft“ laikosi požiūrio „Ne čia sugalvota“, nežiūrėkite toliau į „Azure Pipelines“. Pardavimų literatūroje sakoma: „Bet kokia kalba, bet kokia platforma“. Nors tai beveik neabejotinai yra hiperbolika ir „Azure“ tikriausiai neturi daug ką pasiūlyti ENIAC programuotojams, ji aiškiai siūlo „Microsoft“, „Linux“ ir „MacOS“ kelius jūsų kodui. „Apple“ kampas skirtas tik „MacOS“ versijoms, o ne „iOS“ ar „tvOS“ ar „watchOS“, tačiau nebūkime išrankūs. Tai taurė, kurios pilna daugiau nei pusė.

Abstrakčiai sistema yra panaši į kitas. Yra agentų, kurie vykdo kūrinius, kad pagamintų artefaktus. Kai kurie iš jų gali būti patys priglobti, jei ši parinktis padės. Šūsnis visiškai apima „Docker“ konteinerius, o „Azure“ aparatinė įranga yra pasirengusi juos paleisti už jus. Visas šias detales galima spustelėti kartu su vizualiniu dizaineriu, įmontuotu tinklalapyje, arba nurodyti su YAML, jei norite gyventi komandų eilutės pasaulyje.

Kainos pateikiamos su nemokamu „lygiagrečiu darbu“ su 1800 minučių kūrimo laiku. Jei norite daugiau paralelizmo ar daugiau pastatyto laiko, pradedate mokėti. Planas apima didelę nemokamą atvirojo kodo projektų pakopą, dar kartą pabrėžiant „Microsoft“ norą dalyvauti bendroje atvirojo kodo bendruomenėje. Bet jei „Microsoft“ ketina išleisti 7,5 mlrd. USD, norėdamas nusipirkti vietą prie stalo įsigydamas „GitHub“, tai yra labai prasminga. Kur bus paleistas visas šis kodas? „Azure Pipelines“ bus malonu sklandžiai perkelti ją į „Azure“ aparatinę įrangą.