Programmēšana

CI / CD kā pakalpojums: 10 rīki nepārtrauktai integrācijai un piegādei mākonī

Mākonis un nepārtraukta integrācija (CI) ir dabiska atbilstība. Kamēr mākonis atbrīvo mūs no fizisko serveru instalēšanas un uzturēšanas sāpēm, nepārtraukta integrācija automatizē lielu daļu mūsu koda izveidošanas, testēšanas un izvietošanas sāpju. Ja abu mērķis ir noņemt darbu no attīstības komandu pleciem, ir lietderīgi tos tikai apvienot un ar vienu soli novērst vēl vairāk drupu.

Ir daudz nepārtrauktas integrācijas pakalpojumu, un tie visi dara gandrīz to pašu, vismaz abstraktā nozīmē. Tie sākas ar tādu uzdevumu sarakstu kā apkopošana vai testēšana, kas jāveic, pirms pasaule var novērtēt jūsu jaunās programmatūras ģēniju. Kad esat izveidojis koda rindas, rīki sāk darboties, izmantojot kontrolsarakstu, līdz tie nonāk ceļa bloķēšanā. Ja nav šķēršļu, visi ir laimīgi.

Ikviens var izmantot nepārtrauktu integrāciju jebkuram programmatūras izstrādes projektam, taču lielākās priekšrocības bauda komandas, vēlams lielas komandas, kas strādā pie vieniem un tiem pašiem bloķējošiem koda blokiem. Vispilnīgākā nepārtrauktās integrācijas ieviešana pirms koda testēšanas un atkārtota testēšanas izveido un atjauno kodu, meklējot jaunas kļūdas un nesaderības, kuras, iespējams, ir izveidotas, kad dažādi komandas locekļi pārbauda savu kodu. Nepārtrauktas integrācijas serveri sinhronizē visu programmētāju darbu un palīdz komandai atklāt visas problēmas.

Daži CI servera uzdevumu saraksti beidzas ar testiem, taču pēdējā laikā arvien vairāk komandu paplašina sarakstus, iekļaujot jaunā koda izvietošanu, procesu, kas dažreiz tiek dēvēts par “nepārtrauktu izvietošanu”. Pilnīgi automatizēta izvietošana dažus cilvēkus satrauc, un viņi šajā procesā bieži pievieno dažas manuālas pauzes. Pievienojot mazliet atbildības un cilvēku pārliecības, viņi var nedaudz atpūsties. Viņi šo hibrīdo pieeju nosauks par “nepārtrauktu piegādi”, jo tā piegādā kodu kādam iestudēšanas vai testēšanas klasterim, kur tas gaidīs, kamēr cilvēks veiks pēdējo ražošanu.

Ja nepārtraukta integrācija ir lieliska servera telpā gaitenī, tā var būt vēl labāka mākonī, kur ir lieliskas iespējas ātrākai piegādei un lielākai efektivitātei. Labākajos gadījumos mākoņi var sadalīt darbu un izpildīt uzdevumus paralēli. Pakalpojumi sākas ar lielu aparatūras kopumu un pēc tam tiek koplietoti starp daudzām komandām. Kamēr visi vienlaikus nespiež kodu, būvēšana un testi darbosies daudz ātrāk. Viena un tā pati milzīgā aparatūras iegāde tikai brīžiem, kad izstrādātāji vēlas izpildīt visus testus, ir pārmērīgi, taču, ja komandas dala plauktu, tās visas var izbaudīt ātruma pārrāvumus.

Tomēr pastāv briesmas un rūpes, un lielākais var būt kontroles zaudēšana. Visiem mākoņpakalpojumiem ir jānodod jūsu kods trešai pusei, izvēle, kas dažiem var šķist atbrīvojoša, bet citiem biedējoša. Visi mākoņpakalpojumi ļoti cenšas uzsvērt drošību, taču kaut kā tas jūtas citādi, ja kods atrodas zem jūsu pašu jumta.

Papildus plašajam atbalstam visām galvenajām valodām, šie pakalpojumi aptver pārsteidzoši daudz nepilngadīgo un vairāk nekā dažas patiesi dīvainas un neparastas valodas. Tas drīzāk ir labas sākumā pieņemtu arhitektūras lēmumu rezultāts, nekā jebkurš varoņu pūlis, ko nākuši izstrādātāji. Uzdevumu saraksti gandrīz vienmēr tiek kodēti kā komandas kādai čaulai vai komandrindai, tāpēc nepārtrauktās integrācijas rīki diezgan daudz turpina izdot komandas, līdz saraksts ir izsmelts vai parādās kāds nepārvarams šķērslis. Dažas no valodām, piemēram, Java, piedāvā sarežģītākas iespējas, taču lielākoties rīki var paveikt jebko, ko jūs varat darīt ar komandrindu.

Šeit ir 10 dažādas iespējas, kā veikt nepārtrauktu integrāciju mākonī.

CloudBees

CloudBees Core sāka ar Jenkins, labi pazīstamo atvērtā pirmkoda projektu nepārtrauktai integrācijai, pēc tam pievienoja testēšanu, atbalstu un zināmu pārliecību, ka kods vienkārši darbosies. Uzņēmums uzvarēja visus eksperimentālos spraudņus, pievienoja dažus savus un pēc tam pieslīpēja pareizos, lai tie darbotos, kā paredzēts, kad tie jums ir nepieciešami.

CloudBees joprojām nodarbina 80 procentus Jenkins izstrādes komandas, un viņi bieži sniedz kodu atvērtā pirmkoda projektā, tāpēc varat būt pārliecināti, ka viņi ir labi sapratuši šo dominējošo platformu. Lai paātrinātu situāciju, CloudBees arī pievienoja plašu paralelizāciju, kā arī instrumentus, lai izsekotu jūsu attīstības procesam.

CloudBees piedāvā dažādus cenu punktus, sākot no bezmaksas līmeņiem līdz “sākuma komplektiem” par pilnu pakalpojumu gadu. Uzņēmums arī atbalsta Jenkins atbalstu visiem, kam nepieciešama palīdzība ar rīku, bet nav vajadzīga vai vēlaties mākoņdatošana.

AWS CodePipeline

Amazon nepārtrauktas integrācijas un izvietošanas rīks AWS CodePipeline ir optimizēts koda piegādei AWS serverim, vienlaikus esot atvērts sarežģītākiem jūsu koda un datu ceļiem. Pamata rīks piedāvā jauku iepriekš konfigurētu būvēšanas vides izvēli galvenajām valodām (Java, Python, Node.js, Ruby, Go, Android, .Net Core for Linux) un pēc tam rezultātu pirms tā nosūtīšanas izmet S3 spainī. pie servera, lai sāktu darboties.

Ir pārsteidzoši daudz slāņu ar nedaudz atšķirīgiem nosaukumiem. CodeBuild paņem jaunāko ģēniju no CodeCommit, kad to iedarbina CodePipeline, un pēc tam nodod rezultātu CodeDeploy. Ja tas ir pārāk daudz Code lietu, lai jūs tos varētu konfigurēt, varat pāriet tieši uz CodeStar, kas piedāvā vēl vienu automatizācijas slāni. Ja tikai būtu CodeBugEraserStar, kas arī visas mūsu kļūdas automātiski iznīcinātu. Ir vērts atzīmēt, ka jūs tehniski nemaksājat par kādu no šiem koda slāņiem. Amazon izrakstīs rēķinus tikai par ceļā izmantotajiem aprēķināšanas un uzglabāšanas resursiem. Tas nav gluži bez maksas, lai gan tas patiešām patīk.

Bitbucket cauruļvadi

Atlassian, populārā darba izsekošanas paneļa Jira un kodu krātuves Bitbucket izstrādātāji, nolēma piesaistīt mūsu darbplūsmu, izveidojot Bitbucket Pipelines, nepārtrauktu integrācijas rīku Bitbucket mākonī. Slepenā mērce ir lielāka integrācija, šajā gadījumā savienojumu veidā starp veidošanas mehānismu un citiem Atlassian rīkiem. Vismaz kosmētiski Pipelines nav pat atsevišķa lieta. Tā ir tikai vēl viena izvēlnes opcija katram Bitbucket projektam. Cita izvēlnes opcija norāda uz izvietošanu, ļaujot jums izvēlēties, kur tiek veidoti būvējumi.

Savienojumi ir svētība un ierobežojums. Ja izvēlaties kādu no veidnēm, kas jau ir definētas galvenajām valodām (Java, JavaScript, Python, PHP, .Net utt.), Jūs varat izveidot un izvietot kodu ar dažiem klikšķiem. Bet, ja jūs novirzāties no standartiem, jūs sākat uzzināt, ka iespējas nav. Atlassian patiešām veicina tādu lietotņu tirgu, kuras, šķiet, ir diagrammu un tīmekļa āķu sajaukums citos pakalpojumos. Diagrammas augšējā lietotne, to rakstot, savienos Bitbucket ar Jenkins, domājams, lai izdarītu kaut ko tādu, ko nevar ātri izdarīt sienu iekšpusē.

Cauruļvadu galvenā priekšrocība ir ātrums. Atlassian ir iepriekš izstrādājis lielāko daļu galveno ceļu no koda līdz izvietošanas darbībai, un jūs varat sekot uzņēmuma pēdās tikai par dažiem dolāriem. Ir grūti salīdzināt Bitbucket izmantošanas izmaksas, jo būvējumu cena tiek noteikta minūtēs, tāpat kā lielākajai daļai bez servera modeļu, taču komandas bieži velta gadījumu kopu, lai apstrādātu Jenkins būvējumus. Pat ja jūs tos izslēdzat naktīs un nedēļas nogalēs, stundas summējas.

GitLab CI / CD

Viens no lielākajiem konkurentiem Atlassian ir GitLab, vēl viens uzņēmums, kas vēlas katru procesa soli apstrādāt starp pirkstiem un izvietošanas darbu. GitLab izveides, testēšanas un izvietošanas mehānismi tāpat ir tieši saistīti ar tā Git krātuvēm, lai tos varētu iedarbināt pēc saistībām. Process lielā mērā tiek veidots ap Docker konteineriem, un šī kešatmiņa var ievērojami vienkāršot dažus konfigurācijas darbus, kas jāveic ap Jenkins būvēm.

Veidošanas uzdevumi var būt paredzēti jebkurai valodai, taču tos ir jāaktivizē GitLab Runner - Go rakstīts automātiskās mērogošanas rīks, kas ir gatavs lielākajai daļai platformu. Šī elastība nozīmē, ka jūs varat aktivizēt jebkuru nejaušu darbu citās mašīnās, kas varētu būt noderīgi, izmantojot sarežģītas arhitektūras, kas sniedz vairāk nekā tikai mikropakalpojumu piegādi.

Cenu noteikšana ir saistīta ar dažādiem līmeņiem, lai tuvinātu vajadzību. Piemēram, zelta līmeņa grupas iegūst visas labākās funkcijas, piemēram, drošības paneļus un 50 000 minūtes, veidojot kopīgo mašīnu kopu. Par savu mašīnu izmantošanu procesa daļā vai atsevišķām instancēm citā mākonī nav jāmaksā.

CircleCI

Daudzi no nepārtrauktās integrācijas rīkiem koncentrējas uz kodu, kuru var izveidot Linux vidē. CircleCI būvē un piegādā Linux pasaulē, taču tas piedāvā arī produktu, kas veidos Android lietotnes un visu, kas nāk no Apple Xcode (iOS, MacOS, tvOS vai watchOS). Ja strādājat komandā, kas ražo lietotnes šīm platformām, varat piešķirt savu kodu un ļaut CircleCI ieviest testēšanas disciplīnu visā savā komandas atšķirīgajā ģēnijā.

Uzdevumu saraksti ir izklāstīti YAML failos. CircleCI izmanto Docker visā tā daudzslāņu krāšņumā, lai konfigurētu koda testa vides. Uzbūve sākas ar svaigiem konteineriem, un tāpat tiek veikti visi testi. Mac darbs darbojas virtuālajās mašīnās, kuru kalpošanas laiks ir līdzīgs īss. Tas ļauj izvairīties no dažām konfigurācijas problēmām, jo ​​tīrā vidē nav neviena atlikuma. (Tātad, ja jūsu problēmas izraisa ilgstoša digitālā flotsam, tā ir jūsu vaina.)

Cenu noteikšana ir vērsta uz to, cik daudz CPU jūsu veidotā sistēma izsūc. Lietotāju un krātuvju skaits ir ierobežots līdz bezgalībai. Tomēr tiek mērīts būvniecības minūšu un konteineru skaits, kas veic šo ēku. Pirmais konteiners ir bez maksas, un tajā varat palaist vienu būvējumu. Ja vēlaties lielāku paralēlismu vai lielāku caurlaidspēju, CircleCI var nopelnīt nedaudz naudas. Mac lietotāji nesaņem tādu pašu bezmaksas darījumu, taču ir ievada plāni ikvienam, kurš testē pakalpojumu.

Trevis CI

Ja jūsu būvētās versijas rada kodu, kas jāpārbauda Windows lodziņos, Travis CI piedāvā vienu pieturu. Uzņēmums kādu laiku ir piedāvājis MacOS un Linux iespējas, taču tikko izvērsa Windows opciju, padarot vienkāršāku koda izveidošanu, kas darbojas vēl vairākās vietās.

Uzdevumu saraksti ir izklāstīti arī YAML, un darbi tiek palaisti tīrās virtuālās mašīnās ar diezgan standarta konfigurāciju. Linux kods iegūst dažas Ubuntu pamata versijas, Mac kods darbojas vienā no desmit OS X un Xcode un JDK kombinācijām. Pašlaik Windows kods var nonākt tikai vienā Windows Server versijā (1803). Travis CI piedāvā garu sarakstu ar 30 valodām un uzbūves noteikumiem, kas ir iepriekš konfigurēti un gandrīz gatavi darbam.

Cenu noteikšana ir atkarīga no tā, cik vienlaikus darbu var izpildīt, bet minētās minētās konstrukcijas var aizņemt formālus ierobežojumus. Tas ir tā, it kā jūs saņemtu noteiktu skaitu īpašu darbu gadījumu, un viņi visu laiku ir gatavi. Īpašam darbam nav bezmaksas iespēju, taču atvērtā pirmkoda projekti ir "vienmēr bezmaksas" - tas var būt vienkāršākais veids, kā izmēģināt Travis CI.

Azure cauruļvadi

Ja rodas jautājums, vai mūsdienu Microsoft attieksme ir “Nav izgudrots šeit”, nemeklējiet tālāk par Azure Pipelines. Tirdzniecības literatūrā teikts: “Jebkura valoda, jebkura platforma.” Lai gan tas gandrīz noteikti ir nedaudz hiperbolisks un Azure, iespējams, nav daudz ko piedāvāt ENIAC programmētājiem, tas jūsu kodam nepārprotami piedāvā Microsoft, Linux un MacOS ceļus. Apple stūra mērķis ir tikai MacOS būvējumi, nevis iOS vai tvOS vai watchOS, taču nebūsim izvēlīgi. Šī ir glāze, kas ir daudz vairāk nekā puse pilna.

Abstrakti sakot, sistēma ir līdzīga citām. Ir aģenti, kas veic būvējumus, lai radītu artefaktus. Daži no tiem var tikt mitināti paši, ja šī opcija palīdz. Steks pilnībā aptver Docker konteinerus, un Azure aparatūra ir gatava tos palaist jums. Uz visām šīm detaļām var noklikšķināt kopā ar vizuālo dizaineru, kas iebūvēts tīmekļa lapā, vai norādīt ar YAML, ja vēlaties dzīvot komandrindas pasaulē.

Cenas nāk ar bezmaksas "paralēlu darbu" ar 1800 minūšu būvēšanas laiku. Ja vēlaties vairāk paralēlisma vai vairāk uzbūvēta laika, jūs sākat maksāt. Plāns ietver dāsnu bezmaksas līmeni atvērtā pirmkoda projektiem, vēlreiz uzsverot Microsoft vēlmi piedalīties vispārējā atvērtā koda sabiedrībā. Bet, ja Microsoft gatavojas tērēt 7,5 miljardus ASV dolāru, lai nopirktu vietu pie galda, iegādājoties GitHub, labi, tam ir daudz jēgas. Kur darbosies šis kods? Azure Pipelines labprāt to vienmērīgi pārvietos uz Azure aparatūru.

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