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.
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Ä
Å
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
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.
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
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
ā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
ā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.
ā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
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?
Avots: www.habr.com