Dženkinsa cīņa un GitLab CI/CD

Pēdējo desmit gadu laikā ir panākts ievērojams progress nepārtrauktas integrācijas (CI) un nepārtrauktas izvietoÅ”anas (CD) rÄ«ku izstrādē. ProgrammatÅ«ras izstrādes un darbÄ«bas integrÄ“Å”anas tehnoloÄ£iju attÄ«stÄ«ba (Development Operations, DevOps) ir izraisÄ«jusi strauju pieprasÄ«juma pieaugumu pēc CI/CD rÄ«kiem. EsoÅ”ie risinājumi tiek pastāvÄ«gi pilnveidoti, cenÅ”oties iet lÄ«dzi laikam, tiek izlaistas jaunas versijas, un programmatÅ«ras kvalitātes nodroÅ”ināŔanas (QA) pasaulē pastāvÄ«gi parādās daudzi jauni produkti. Ar tik lielu izvēles iespēju izvēlēties pareizos rÄ«kus nav viegls uzdevums.

Dženkinsa cīņa un GitLab CI/CD

Starp visiem esoÅ”ajiem CI/CD rÄ«kiem ir divi projekti, kuriem noteikti ir vērts pievērst uzmanÄ«bu tiem, kas meklē kaut ko Å”ajā jomā. Mēs runājam par Jenkins un GitLab CI/CD rÄ«ku, kas ir daļa no GitLab platformas. Dženkinsam ir vairāk nekā 16000 zvaigznes vietnē GitHub. GitLab repozitorijs vietnē gitlab.com ir ieguvis nedaudz vairāk 2000 zvaigznes Ja salÄ«dzinām repozitoriju popularitāti, izrādās, ka Dženkinss ieguva 8 reizes vairāk zvaigžņu nekā platforma, kas ietver GitLab CI/CD. Bet, izvēloties CI/CD rÄ«ku, tas nebÅ«t nav vienÄ«gais rādÄ«tājs, kam vērts pievērst uzmanÄ«bu. Ir daudz citu, kas izskaidro, kāpēc Jenkins un GitLab CI/CD daudzos salÄ«dzinājumos ir ļoti tuvu viens otram.

Ņemiet, piemēram, datus no platformas G2, kurā tiek apkopotas dažādu produktu atsauksmes un lietotāju sniegtie vērtējumi. Å eit ir vidējais vērtējums Jenkins, kas iegÅ«ts no 288 atsauksmēm, ir 4,3 zvaigznes. Ak GitLab Å eit ir 270 atsauksmes, un vidējais vērtējums Å”im rÄ«kam ir 4,4 zvaigznes. Mēs nekļūdÄ«tos, sakot, ka Jenkins un GitLab CI/CD konkurē savā starpā ar vienādiem noteikumiem. Interesanti atzÄ«mēt, ka Dženkinsa projekts parādÄ«jās 2011. gadā un kopÅ” tā laika ir bijis iecienÄ«ts testētāju rÄ«ks. Bet tajā paŔā laikā GitLab CI/CD projekts, kas tika uzsākts 2014. gadā, ir ieņēmis savas pozÄ«cijas, ļoti augstu, pateicoties Ŕīs platformas piedāvātajām uzlabotajām iespējām.

Ja runājam par Jenkins popularitāti, salÄ«dzinot ar citām lÄ«dzÄ«gām platformām, tad atzÄ«mējam, ka pēc Travis CI un Jenkins platformu salÄ«dzināŔanas raksta publicÄ“Å”anas organizējām aptauju. Tajā piedalÄ«jās 85 lietotāji. Respondentiem tika lÅ«gts izvēlēties CI/CD rÄ«ku, kas viņiem patika vislabāk. 79% izvēlējās Jenkins, 5% izvēlējās Travis CI, un 16% norādÄ«ja, ka dod priekÅ”roku citiem instrumentiem.

Dženkinsa cīņa un GitLab CI/CD
Aptaujas rezultāti

Starp citiem CI/CD rīkiem visbiežāk tika minēts GitLab CI/CD.

Ja jÅ«s nopietni domājat par DevOps, tad jums rÅ«pÄ«gi jāizvēlas atbilstoÅ”ie rÄ«ki, ņemot vērā projekta iezÄ«mes, tā budžetu un citas prasÄ«bas. Lai palÄ«dzētu jums izdarÄ«t pareizo izvēli, mēs analizēsim Jenkins un GitLab CI/CD. Es ceru, ka tas palÄ«dzēs jums izdarÄ«t pareizo izvēli.

Iepazīstinām ar Dženkinsu

Dženkinsa cīņa un GitLab CI/CD
Jenkins ir labi zināms, elastÄ«gs CI/CD rÄ«ks, kas paredzēts daudzu ar programmatÅ«ras projektiem saistÄ«tu uzdevumu automatizÄ“Å”anai. Jenkins ir pilnÄ«bā uzrakstÄ«ts Java un tiek izlaists saskaņā ar MIT licenci. Tam ir jaudÄ«gs iespēju kopums, kura mērÄ·is ir automatizēt uzdevumus, kas saistÄ«ti ar programmatÅ«ras izveidi, testÄ“Å”anu, izvietoÅ”anu, integrÄ“Å”anu un izlaiÅ”anu. Å o rÄ«ku var izmantot dažādās operētājsistēmās. Tajos ietilpst macOS, Windows un daudzi Linux izplatÄ«jumi, piemēram, OpenSUSE, Ubuntu un Red Hat. Ir Jenkins instalācijas pakotnes, kas paredzētas dažādām operētājsistēmām, Å”o rÄ«ku var instalēt Docker un jebkurā sistēmā, kurā ir JRE (Java Runtime Environment).

Jenkins izstrādātāji ir izveidojuÅ”i vēl vienu projektu Jenkins X, kas paredzēts darbam Kubernetes vidē. Jenkins X integrē Helm, Jenkins CI/CD serveri, Kubernetes un citus rÄ«kus, kas izstrādāti, lai izveidotu CI/CD konveijerus, kas atbilst DevOps paraugpraksei. Piemēram, Å”eit tiek izmantots GitOps.

Kā vienu no Jenkins priekÅ”rocÄ«bām var pieskaitÄ«t to, ka tā skripti ir ļoti labi strukturēti, saprotami un viegli lasāmi. Jenkins komanda ir izveidojusi aptuveni 1000 spraudņu, kuru mērÄ·is ir organizēt Jenkins mijiedarbÄ«bu ar dažādām tehnoloÄ£ijām. Skriptos var izmantot autentifikācijas sistēmas, kas, piemēram, ļauj pieslēgties dažādām slēgtām sistēmām.

Dženkinsa cauruļvada darbÄ«bas laikā var novērot, kas notiek katrā solÄ«, vai atseviŔķi darba posmi tika veiksmÄ«gi vai nē. To visu var novērot, nevis izmantojot kaut kādu grafisko interfeisu, bet gan izmantojot termināļa iespējas.

Dženkinsa iezīmes

Starp labi zināmajām Jenkins funkcijām ir konfigurācijas vienkārŔība, augsts dažādu darbÄ«bu automatizācijas lÄ«menis un lieliska dokumentācija. Ja mēs runājam par DevOps problēmu risināŔanu, tad Jenkins tiek uzskatÄ«ts par ļoti uzticamu rÄ«ku, kuru izmantojot, kā likums, nav jēgas rÅ«pÄ«gi uzraudzÄ«t visu projekta apstrādes procesu. Tas neattiecas uz citiem CI/CD rÄ«kiem. Parunāsim par dažām svarÄ«gākajām Dženkinsa funkcijām.

ā–1. Bezmaksas, atvērtā koda, atbalstÄ«tas vairākas platformas

Jenkins var darboties MacOS, Windows un Linux platformās. Tas var darboties arī Docker vidē, kas ļauj organizēt automatizētus uzdevumus vienveidīgi un ātri. Rīks var darboties arī kā servletu Java iespējotos konteineros, piemēram, Apache Tomcat un GlassFish. Instalējiet Jenkins efektīvi dokumentēts.

ā–2. Izstrādāta spraudņu ekosistēma

Å Ä·iet, ka Dženkinsa spraudņu ekosistēma ir daudz nobrieduŔāka salÄ«dzinājumā ar citu CI/CD rÄ«ku spraudņu ekosistēmām. PaÅ”laik ir vairāk nekā 1500 Jenkins spraudņu. Å ie spraudņi ir paredzēti dažādu problēmu risināŔanai, ar to palÄ«dzÄ«bu jÅ«s varat automatizēt visdažādākos projektus. Bezmaksas spraudņu izvēle nozÄ«mē, ka ikvienam, kas izmanto Jenkins, nav steidzami jāiegādājas dārgi maksas spraudņi. Pastāv iespēja integrācija Jenkins ar daudziem DevOps rÄ«kiem.

ā–3. Viegla uzstādÄ«Å”ana un iestatÄ«Å”ana

Jenkins ir diezgan viegli uzstādÄ«t un konfigurēt. Tajā paŔā laikā sistēmas atjaunināŔanas process ir arÄ« ļoti ērts. Å eit atkal ir vērts pieminēt dokumentācijas kvalitāti, jo tā var atbildēt uz dažādiem jautājumiem, kas saistÄ«ti ar Jenkins instalÄ“Å”anu un konfigurÄ“Å”anu.

ā–4. DraudzÄ«ga kopiena

Kā jau minēts, Jenkins ir atvērtā pirmkoda projekts, kura ekosistēma ietver milzīgu skaitu spraudņu. Ap Jenkinsu ir liela lietotāju un izstrādātāju kopiena, kas palīdz izstrādāt projektu. Kopiena ir viens no faktoriem, kas virza Dženkinsa attīstību.

ā–5. REST API pieejamÄ«ba

Strādājot ar Jenkins, varat izmantot REST API, kas paplaÅ”ina sistēmas iespējas. API attālinātai piekļuvei sistēmai tiek piedāvāts trÄ«s versijās: XML, JSON ar JSONP atbalstu, Python. Å”eit ir dokumentācijas lapa, kurā sniegta informācija par darbu ar Jenkins REST API.

ā–6. Paralēlā uzdevumu atbalsts

Jenkins atbalsta DevOps uzdevumu paralēlizāciju. To var viegli integrēt ar saistÄ«tajiem rÄ«kiem un saņemt paziņojumus par uzdevumu rezultātiem. Kodu testÄ“Å”anu var paātrināt, organizējot paralēlas projektu bÅ«ves, izmantojot dažādas virtuālās maŔīnas.

ā–7. Atbalsts darbam izkliedētā vidē

Jenkins ļauj organizēt izplatÄ«tas versijas, izmantojot vairākus datorus. Å Ä« funkcija ir piemērojama lielos projektos un izmanto darba shēmu, kurā ir viens galvenais Jenkins serveris un vairākas vergu maŔīnas. Vergu maŔīnas var izmantot arÄ« situācijās, kad nepiecieÅ”ams organizēt projekta testÄ“Å”anu dažādās vidēs. Å Ä«s funkcijas atŔķir Jenkins no citiem lÄ«dzÄ«giem projektiem.

Iepazīstinām ar GitLab

Dženkinsa cīņa un GitLab CI/CD
GitLab CI/CD var saukt par vienu no jaunākajiem un DevOps inženieru iecienÄ«tākajiem rÄ«kiem. Å is bezmaksas atvērtā pirmkoda rÄ«ks ir iebÅ«vēts GitLab versiju kontroles sistēmā. GitLab platformai ir kopienas versija, tā atbalsta repozitoriju pārvaldÄ«bu, rÄ«kus problēmu izsekoÅ”anai, koda pārskatÄ«Å”anas organizÄ“Å”anu un mehānismus, kas vērsti uz dokumentācijas izveidi. Uzņēmumi var instalēt GitLab lokāli, saistot to ar Active Directory un LDAP serveriem droÅ”ai lietotāju autorizācijai un autentifikācijai.

Å”eit ir Video pamācÄ«ba, kas palÄ«dzēs jums uzzināt, kā izveidot CI/CD cauruļvadus, izmantojot GitLab CI/CD iespējas.

GitLab CI/CD sākotnēji tika izlaists kā atseviŔķs projekts, taču 2015. gadā rÄ«ku kopa tika integrēta GitLab 8.0. Viens GitLab CI/CD serveris var atbalstÄ«t vairāk nekā 25000 XNUMX lietotāju. Pamatojoties uz Ŕādiem serveriem, jÅ«s varat izveidot sistēmas, kas ir ļoti pieejamas.

GitLab CI/CD un galvenais GitLab projekts ir rakstÄ«ti Ruby and Go. Tie tiek izlaisti saskaņā ar MIT licenci. GitLab CI/CD papildus parastajām CI/CD rÄ«ku iespējām atbalsta arÄ« papildu iespējas, kas saistÄ«tas, piemēram, ar darba plānoÅ”anu.

GitLab CI/CD integrÄ“Å”ana projektā ir ļoti vienkārÅ”a. Izmantojot GitLab CI/CD, projekta koda apstrādes process tiek sadalÄ«ts posmos, no kuriem katrs var sastāvēt no vairākiem noteiktā secÄ«bā veiktiem uzdevumiem. Uzdevumus var precizēt.

Uzdevumus var izpildÄ«t paralēli. Pēc posmu un uzdevumu secÄ«bas iestatÄ«Å”anas CI/CD konveijers ir gatavs darbam. Varat pārraudzÄ«t tā norisi, izsekojot uzdevumu statusam. Rezultātā GitLab CI/CD lietoÅ”ana ir ļoti ērta, iespējams, ērtāka par citiem lÄ«dzÄ«giem rÄ«kiem.

GitLab CI/CD un GitLab funkcijas

GitLab CI/CD ir viens no populārākajiem DevOps rÄ«kiem. Projekts izceļas ar kvalitatÄ«vu dokumentāciju, tā iespējas ir viegli un ērti lietojamas. Ja esat iesācējs GitLab CI/CD, tālāk sniegtais rÄ«ka funkciju saraksts sniegs vispārÄ«gu priekÅ”statu par to, ko no tā varat sagaidÄ«t. Jāpiebilst, ka daudzas no Ŕīm funkcijām ir saistÄ«tas ar paÅ”u GitLab platformu, kurā ir integrēts GitLab CI/CD.

ā–1. Popularitāte

GitLab CI/CD ir salÄ«dzinoÅ”i jauns rÄ«ks, kas ir plaÅ”i izmantots. GitLab CI/CD pakāpeniski ir kļuvis par ārkārtÄ«gi populāru CI/CD rÄ«ku, ko izmanto automatizētai programmatÅ«ras testÄ“Å”anai un izvietoÅ”anai. To ir viegli iestatÄ«t. Tas ir arÄ« bezmaksas CI/CD rÄ«ks, kas iebÅ«vēts GitLab platformā.

ā–2. GitLab Pages un Jekyll atbalsts

Jekyll ir statisks vietņu Ä£enerators, ko var izmantot GitLab Pages sistēmā, lai izveidotu vietnes, kuru pamatā ir GitLab repozitoriji. Sistēma ņem izejmateriālus un, pamatojoties uz tiem, Ä£enerē gatavu statisku vietni. Rediģējot failu, varat kontrolēt Ŕādu vietņu izskatu un iespējas _config.yml, ko izmantoja Jekyll.

ā–3. Projektu plānoÅ”anas iespējas

Pateicoties iespējai plānot projekta posmus, palielinās problēmu un to grupu izsekoÅ”anas ērtÄ«ba. Tas ļauj vadÄ«t projektu darba organizāciju un plānot to Ä«stenoÅ”anu uz konkrētu datumu.

ā–4. Automātiska CI skrējēju mērogoÅ”ana

Pateicoties automātiskai skrējēju mērogoÅ”anai, kas ir atbildÄ«gi par konkrētu uzdevumu veikÅ”anu, jÅ«s varat ievērojami ietaupÄ«t servera jaudas nomas izmaksas. Tas ir ļoti svarÄ«gi, jo Ä«paÅ”i, ja runa ir par vidēm, kur projekti tiek testēti paralēli. Turklāt tas ir svarÄ«gi lieliem projektiem, kas sastāv no vairākām krātuvēm.

ā–5. Problēmu izsekoÅ”anas rÄ«ki

GitLab jaudÄ«gās problēmu izsekoÅ”anas iespējas ir noveduÅ”as pie daudziem atvērtā pirmkoda projektiem, izmantojot platformu. GitLab CI/CD ļauj paralēli testēt dažādus kodu zarus. Testa rezultātus var ērti analizēt sistēmas saskarnē. Tas atŔķir GitLab CI/CD no Dženkinsa.

ā–6. Piekļuves ierobežoÅ”ana krātuvēm

GitLab platforma atbalsta piekļuves ierobežoÅ”anu krātuvēm. Piemēram, tiem, kas sadarbojas ar projektu repozitorijā, var pieŔķirt tiesÄ«bas, kas atbilst viņu lomām. ÄŖpaÅ”i tas attiecas uz korporatÄ«vajiem projektiem.

ā–7. AktÄ«vs sabiedrÄ«bas atbalsts

Ap GitLab ir izveidojusies aktīva kopiena, kas veicina Ŕīs platformas un tās rīku, jo īpaŔi GitLab CI/CD, izstrādi. Dziļa integrācija starp GitLab CI/CD un GitLab, cita starpā, ļauj vieglāk atrast atbildes uz jautājumiem, kas rodas, strādājot ar GitLab CI/CD.

ā–8. Atbalsts darbam ar dažādām versiju kontroles sistēmām

GitLab CI/CD ir sistēma, kas var darboties ne tikai ar kodu, kas mitināts GitLab krātuvēs. Piemēram, kodu var saglabāt GitHub repozitorijā, un CI/CD konveijeru var organizēt, pamatojoties uz GitLab, izmantojot GitLab CI/CD.

Dženkinsa un GitLab CI/CD salīdzinājums

Jenkins un GitLab CI/CD ir ļoti labi rÄ«ki, no kuriem katrs spēj nodroÅ”ināt normālu CI/CD konveijera darbÄ«bu. Bet, ja tos salÄ«dzina, izrādās, ka, lai gan tie daudzējādā ziņā ir lÄ«dzÄ«gi, savā ziņā tie atŔķiras viens no otra.

RaksturoŔana
Jenkins
GitLab CI/CD

Atvērts vai slēgts avots
Atvērtais avots
Atvērtais avots

UzstādīŔana
Obligāti.
Nav nepiecieÅ”ams, jo Ŕī ir GitLab platformas iebÅ«vēta funkcija.

Unikālas īpaŔības
Spraudņu atbalsts.
Dziļa integrācija versiju kontroles sistēmā.

atbalsts
Trūkst.
Pieejams.

UzstādÄ«Å”ana un konfigurÄ“Å”ana
Nekādas grūtības nesagādā
Nekādas grūtības nesagādā

Sistēmas paÅ”izvietoÅ”ana
Šī ir vienīgā iespēja izmantot sistēmu.
Atbalstīts.

CI/CD konveijeru izveide
Atbalsta un izmanto Jenkins Pipeline.
Atbalstīts.

Lietojumprogrammu veiktspējas uzraudzība
Trūkst.
Pieejams.

Ekosistēma
Ir vairāk nekā 1000 spraudņu.
Sistēma tiek izstrādāta GitLab ietvaros.

API
Atbalsta uzlaboto API sistēmu.
Piedāvā API dziļākai integrācijai projektos.

JavaScript atbalsts
Pieejams.
Pieejams.

Integrācija ar citiem rīkiem
Tiek atbalstīta integrācija ar citiem rīkiem un platformām (Slack, GitHub).
Daudzi rÄ«ki integrācijai ar treÅ”o puÅ”u sistēmām, jo ā€‹ā€‹Ä«paÅ”i ar GitHub un Kubernetes.

Koda kvalitātes kontrole
Atbalstīts - izmantojot SonarQube spraudni un citus spraudņus.
Atbalstīts.

AtŔķirības starp Jenkins un GitLab CI/CD

Pēc Jenkins un GitLab CI/CD aprakstÄ«Å”anas un salÄ«dzināŔanas pievērsÄ«simies atŔķirÄ«bām starp Å”iem DevOps rÄ«kiem. Zinot Ŕīs atŔķirÄ«bas, tiks sniegts ieskats tajos, kuri dod priekÅ”roku vienam no Å”iem rÄ«kiem, nevis otram.

  • GitLab CI/CD var pilnÄ«bā kontrolēt Git repozitorijus. Mēs runājam par repozitorija filiāļu pārvaldÄ«bu un dažām citām funkcijām. Bet Jenkins, lai gan tas var strādāt ar krātuvēm, nenodroÅ”ina tādu paÅ”u kontroles lÄ«meni pār tiem kā GitLab CI/CD.
  • Jenkins ir bezmaksas atvērtā koda projekts. Tas, kurÅ” to izvēlas, pats to izvērÅ”. Un GitLab CI/CD ir iekļauts GitLab platformā, tas ir gatavs risinājums.
  • GitLab CI/CD atbalsta uzlabotus problēmu pārvaldÄ«bas rÄ«kus, kas darbojas projekta lÄ«menÄ«. Å Ä« Dženkinsa puse ir mazāk attÄ«stÄ«ta.

Dženkinss un GitLab CI/CD: stiprās un vājās puses

Tagad jums ir priekÅ”stats par Jenkins un GitLab CI/CD. Tagad, lai jÅ«s vēl labāk iepazÄ«tu Å”os rÄ«kus, apskatÄ«sim to stiprās un vājās puses. Mēs uzskatām, ka jÅ«s jau esat pieņēmis lēmumu par jums nepiecieÅ”amo rÄ«ku. Es ceru, ka Ŕī sadaļa ļaus jums pārbaudÄ«t sevi.

ā–Jenkins stiprās puses

  • Liels skaits spraudņu.
  • PilnÄ«ga instrumenta uzstādÄ«Å”anas kontrole.
  • VienkārÅ”a skrējēju atkļūdoÅ”ana.
  • VienkārÅ”a mezgla iestatÄ«Å”ana.
  • VienkārÅ”a koda izvietoÅ”ana.
  • Ä»oti laba akreditācijas datu pārvaldÄ«bas sistēma.
  • ElastÄ«gums un daudzpusÄ«ba.
  • Atbalsts dažādām programmÄ“Å”anas valodām.
  • Sistēma ir saprotama intuitÄ«vā lÄ«menÄ«.

ā–Jenkins vājās puses

  • Izmantojot spraudņus, var rasties grÅ«tÄ«bas.
  • Izmantojot Jenkins mazos projektos, laiks, kas nepiecieÅ”ams, lai to iestatÄ«tu pats, var bÅ«t nepamatoti liels.
  • Vispārējas analÄ«tiskās informācijas trÅ«kums par CI/CD ķēdēm.

ā–GitLab CI/CD stiprās puses

  • Laba integrācija ar Docker.
  • VienkārÅ”a skrējēju mērogoÅ”ana.
  • CI/CD konveijera posmos iekļauto uzdevumu paralēla izpilde.
  • Izmantojot virzÄ«to aciklisko grafiku modeli, uzstādot uzdevumu attiecÄ«bas.
  • Augsts mērogojamÄ«bas lÄ«menis, pateicoties iespējai paralēli izpildÄ«t skrējējus.
  • VienkārÅ”a uzdevumu pievienoÅ”ana.
  • VienkārÅ”a konfliktu risināŔana.
  • Uzticama droŔības sistēma.

ā–GitLab CI/CD vājās puses

  • Katram uzdevumam ir jāapraksta un jāaugÅ”upielādē/jāizlādē artefakti.
  • JÅ«s nevarat pārbaudÄ«t filiāļu apvienoÅ”anas rezultātus pirms to faktiskās apvienoÅ”anas.
  • Aprakstot CI/CD konveijera posmus, vēl nav iespējams noŔķirt atseviŔķus posmus.

Rezultāti

Gan Jenkins, gan GitLab CI/CD ir stiprās un vājās puses. Atbilde uz jautājumu, ko izvēlēties, ir atkarÄ«ga no konkrētā projekta vajadzÄ«bām un Ä«paŔībām. Katrs no Å”odien apspriestajiem CI/CD rÄ«kiem atŔķiras ar noteiktām funkcijām, lai gan Å”ie rÄ«ki tika izveidoti, lai atrisinātu vienu un to paÅ”u problēmu. Tajā paŔā laikā Jenkins ir atseviŔķs rÄ«ks, un GitLab CI/CD ir daļa no platformas, kas paredzēta sadarbÄ«bai ar kodu.

Izvēloties CI/CD sistēmu, papildus tās iespējām ir vērts ņemt vērā izmaksas, kas ar to var bÅ«t saistÄ«tas, un ar ko Ä«sti ir pieraduÅ”i strādāt projektu atbalstoÅ”ie DevOps inženieri.

Kādus CI/CD rīkus jūs izmantojat?

Dženkinsa cīņa un GitLab CI/CD

Dženkinsa cīņa un GitLab CI/CD

Avots: www.habr.com

Pievieno komentāru