Battle of Jenkins eta GitLab CI/CD

Azken hamarkadan, aurrerapen handiak eman dira etengabeko integraziorako (Etengabeko Integrazioa, CI) eta etengabeko hedapenerako (Continuous Delivery, CD) tresnen garapenean. Softwarearen garapena eta funtzionamendua integratzeko teknologien garapenak (Garapen Eragiketak, DevOps) CI / CD tresnen eskaera azkar handitu du. Dauden irtenbideak etengabe hobetzen ari dira, garaiari jarraitu nahian, haien bertsio berriak kaleratzen dira, kalitatea bermatzeko softwarearen munduan (Kalitatea Bermatzeko, QA), produktu berri asko etengabe agertzen dira. Aukera horren aberastasunarekin, tresna egokia aukeratzea ez da lan erraza.

Battle of Jenkins eta GitLab CI/CD

Dauden CI / CD tresna guztien artean, arlo honetako zerbait bilatzen ari den norbaiti arreta jartzea merezi duten bi proiektu daude. Jenkins eta GitLab CI / CD tresnari buruz ari gara, GitLab plataformaren parte dena. Jenkinsek baino gehiago ditu 16000 izarrak GitHub-en. gitlab.com-eko GitLab biltegiak puntuazio gehiago lortu zuen 2000 izarrak. Biltegien ospea konparatzen badugu, Jenkinsek GitLab CI / CD barne duen plataformak baino 8 aldiz izar gehiago lortu zituen. Baina CI / CD tresna bat aukeratzerakoan, hau arreta jarri behar diozun adierazle bakarra urrun dago. Beste asko daude, eta horrek azaltzen du zergatik konparaketa askotan, Jenkins eta GitLab CI / CD elkarrengandik oso hurbil egotea.

Hartu, adibidez, G2 plataformako datuak, askotariko produktuen iritziak eta erabiltzaileek ematen dizkieten balorazioak pilatzen dituena. Hona hemen batez besteko balorazioa Jenkins, 288 berrikuspenetan oinarrituta, 4,3 izar da. Oh oh GitLab 270 iritzi daude, tresna honen batez besteko balorazioa 4,4 izar da. Ez gara oker egongo Jenkins eta GitLab CI / CD elkarren artean baldintza berdinetan lehiatzen direla esatean. Interesgarria da jenkins proiektua 2011n agertu zela eta harrezkero probatzaileen tresna gogokoena dela. Baina, aldi berean, 2014an abian jarritako GitLab CI / CD proiektuak bere posizioa hartu du, oso altu, plataforma honek eskaintzen dituen funtzio aurreratuei esker.

Jenkinsen ospeari buruz hitz egiten badugu antzeko beste plataformekin alderatuta, ohartzen gara Travis CI eta Jenkins plataformak alderatzen dituen artikulu bat argitaratu genuenez, inkesta bat antolatu genuela. 85 erabiltzailek hartu dute parte bertan. Inkestatuei gehien gustatzen zaien CI/CD tresna aukeratzeko eskatu zaie. %79k Jenkins aukeratu zuen, %5ek Travis CI eta %16k beste tresna batzuk nahiago dituela adierazi zuen.

Battle of Jenkins eta GitLab CI/CD
Inkesten emaitzak

CI/CD beste tresnen artean, GitLab CI/CD aipatzen zen gehien.

DevOps-i buruz serio bazara, orduan tresna egokiak arretaz hautatu behar dituzu, proiektuaren berezitasunak, aurrekontua eta beste eskakizun batzuk kontuan hartuta. Aukera egokia egiten laguntzeko, Jenkins eta GitLab CI/CD berrikusiko ditugu. Honek aukera egokia egiten lagunduko dizu.

Jenkins-en aurkezpena

Battle of Jenkins eta GitLab CI/CD
Jenkins software-proiektuekin lotutako zeregin asko automatizatzeko diseinatutako CI/CD tresna ezaguna eta malgua da. Jenkins Javan idatzita dago guztiz eta MIT lizentziapean kaleratu da. Softwarea eraiki, probatu, hedatzea, integratzea eta kaleratzearekin lotutako zereginak automatizatzera zuzendutako funtzio multzo indartsua du. Tresna hau hainbat sistema eragiletan erabil daiteke. Horien artean daude macOS, Windows eta Linux banaketa asko, hala nola OpenSUSE, Ubuntu eta Red Hat. Jenkins-en instalazio paketeak daude hainbat OSetarako diseinatuta, tresna hau Docker-en eta JRE (Java Runtime Environment) duen edozein sistematan instalatu daiteke.

Jenkins garatzaileek beste proiektu bat sortu dute, Jenkins X, Kubernetes ingurunean lan egiteko diseinatuta dagoena. Jenkins X-ek Helm, Jenkins CI/CD Server, Kubernetes eta beste tresna batzuk integratzen ditu DevOps praktika onenak jarraitzen dituzten CI/CD kanalizazioak eraikitzeko. Adibidez, GitOps erabiltzen da hemen.

Jenkins-en abantailen altxortegiari bere gidoiak oso ondo egituratuak, ulergarriak eta irakurterrazak direla gehi diezaioke. Jenkins taldeak 1000 plugin inguru sortu ditu, Jenkinsen elkarrekintza askotariko teknologiarekin antolatzera zuzenduta. Scriptek autentifikazio-sistemak erabil ditzakete, eta horrek, adibidez, hainbat sistema itxietara konektatzeko aukera ematen du.

Jenkins hodiaren ustiapenean, urrats bakoitzean zer gertatzen den ikus dezakezu, lanaren fase jakin batzuk arrakastaz burutu diren ala ez. Hori guztia ikus dezakezu, ordea, interfaze grafiko jakin bat erabili gabe, baina terminalaren gaitasunak erabiliz.

Jenkinsen ezaugarriak

Jenkinsen ezaugarri ezagunen artean konfiguratzeko erraztasuna, hainbat eragiketen automatizazio maila altua eta dokumentazio bikaina daude. DevOps zereginak ebazteari buruz hitz egiten badugu, hemen Jenkins tresna oso fidagarritzat hartzen da, eta, oro har, ez du zentzurik proiektuaren prozesatzeko prozesu osoa jarraitzea. Ez da hori gertatzen CI/CD beste tresnekin. Hitz egin dezagun Jenkinsen ezaugarri garrantzitsuenetariko batzuei buruz.

▍1. Doako, kode irekiko eta plataforma anitzeko euskarria

Jenkins macOS, Windows eta Linux plataformetan exekutatu daiteke. Docker ingurunean ere funtziona dezake, eta horrek zeregin automatizatuen exekuzio uniforme eta azkarra antolatzeko aukera ematen du. Tresna hau servlet gisa ere exekutatu daiteke Java gaitutako edukiontzietan, hala nola Apache Tomcat eta GlassFish. Jenkins-en instalazioa kualitatiboki dokumentatuta.

▍2. Plugin-ekosistema garatua

Jenkins plugin-ekosistema beste CI/CD tresnen plugin-ekosistemak baino askoz helduagoa dela dirudi. Gaur egun Jenkins-en 1500 plugin baino gehiago daude. Plugin hauek zeregin ugari konpontzera zuzenduta daude, haien laguntzarekin hainbat proiektu automatiza ditzakezu. Aukeratzeko doako pluginen aberastasunak esan nahi du Jenkins erabiltzen ari bazara, ez duzula ordaindutako plugin garestiak erosi beharrik. Badago aukera integrazioa Jenkins DevOps tresna askorekin.

▍3. Instalazio eta konfigurazio erraza

Jenkins nahiko erraza da instalatzen eta konfiguratzen. Aldi berean, sistema eguneratzeko prozesua ere oso erosoa da. Hemen, berriro ere, aipatzekoa da dokumentazioaren kalitatea, bertan Jenkins instalatu eta konfiguratzearekin lotutako hainbat galderen erantzunak aurki ditzakezulako.

▍4. Lagunarteko komunitatea

Esan bezala, Jenkins kode irekiko proiektu bat da, eta horren ekosistemak plugin ugari biltzen ditu. Jenkinsen inguruan erabiltzaile eta garatzaileen komunitate handi bat garatu da proiektua garatzen laguntzeko. Komunitatea Jenkinsen garapena bultzatzen duen faktoreetako bat da.

▍5. REST APIaren erabilgarritasuna

Jenkins-ekin lan egiten duzun bitartean, REST APIa erabil dezakezu, sistemaren gaitasunak zabaltzen dituena. Sistemara urruneko sarbidea izateko APIa hiru bertsiotan aurkezten da: XML, JSON JSONP euskarria duen, Python. Hemen Jenkins REST APIarekin lan egiteko xehetasunak biltzen dituen dokumentazio orria.

▍6. Zereginen exekuzio paralelorako laguntza

Jenkinsek DevOps zereginen paralelizazioa onartzen du. Erraz integra daiteke tresna garrantzitsuekin eta zereginen emaitzei buruzko jakinarazpenak jaso. Kode-probak bizkortu daitezke makina birtual desberdinak erabiliz proiektuaren eraikuntza paralelo bat antolatuz.

▍7. Ingurune banatuetan lan egiteko laguntza

Jenkinsek hainbat ordenagailu erabiliz banatutako eraikuntzak antolatzeko aukera ematen du. Ezaugarri hau proiektu handietan aplikagarria da eta lan-eskema bat erabiltzen du, zeinaren arabera Jenkins zerbitzari nagusi bat eta hainbat makina esklabo daude. Makina esklaboak ingurune ezberdinetan proiektu baten probak antolatzeko beharrezkoa den egoeretan ere erabil daitezke. Ezaugarri hauek antzeko beste proiektuetatik bereizten dute Jenkins.

GitLab-en sarrera

Battle of Jenkins eta GitLab CI/CD
GitLab CI/CD DevOps tresna berrienetariko eta maitatuenetako bat dei daiteke. Doako kode irekiko tresna hau GitLab bertsio kontrolatzeko sisteman dago. GitLab plataformak komunitatearen bertsioa du, biltegien kudeaketa, gaien jarraipena egiteko tresnak, kodea berrikusteko antolakuntza, dokumentaziora bideratutako mekanismoak onartzen ditu. Enpresek GitLab lokalean instala dezakete, Active Directory eta LDAP zerbitzariekin lotuz, erabiltzaileen baimen eta autentifikazio segururako.

Hemen GitLab CI/CD gaitasunak erabiliz CI/CD kanalizazioak sortzen ikasteko bideo-tutoriala.

GitLab CI/CD jatorrizko proiektu autonomo gisa kaleratu zen, baina 2015ean tresna multzo hau GitLab 8.0-n integratu zen. GitLab CI/CD zerbitzari bakar batek 25000 erabiltzaile baino gehiago onartzen ditu. Horrelako zerbitzarietan oinarrituta, oso erabilgarri dauden sistemak sor ditzakezu.

GitLab CI/CD eta GitLab proiektu nagusia Ruby and Go-n idatzita daude. MIT lizentziapean kaleratzen dira. GitLab CI/CD-k, CI/CD tresnen ohiko ezaugarriez gain, funtzio osagarriak ere onartzen ditu, adibidez, lan-programazioarekin.

GitLab CI/CD proiektu batean integratzea oso erraza da. GitLab CI/CD erabiltzean, proiektuaren kodea prozesatzeko prozesua fasetan banatzen da, eta horietako bakoitza ordena jakin batean egindako hainbat ataza izan daiteke. Zereginak finkatu daitezke.

Zereginak paraleloan exekutatu daitezke. Etapa eta zereginen sekuentzia konfiguratu ondoren, CI/CD kanalizazioa prest dago. Bere aurrerapena kontrolatu dezakezu zereginen egoera kontrolatuz. Ondorioz, GitLab CI / CD erabiltzea oso erosoa da, agian antzeko beste tresna batzuk baino erosoagoa.

GitLab CI/CD eta GitLab-en ezaugarriak

GitLab CI/CD DevOps tresna ezagunenetako bat da. Proiektua kalitate handiko dokumentazioagatik bereizten da, bere ezaugarriak erabiltzeko errazak eta erosoak dira. Oraindik GitLab CI/CD ezagutzen ez baduzu, tresna honen ezaugarrien zerrenda honek bertatik espero dezakezunaren ideia orokorra emango dizu. Kontuan izan behar da ezaugarri horietako asko GitLab plataformari berari lotuta daudela, bertan GitLab CI / CD integratuta dagoela.

▍1. Ospea

GitLab CI/CD tresna nahiko berria da, erabilera zabala aurkitu duena. GitLab CI/CD proba automatizatuetarako eta softwarea zabaltzeko erabiltzen den CI/CD tresna oso ezaguna bihurtu da poliki-poliki. Konfiguratzeko erraza da. GitLab plataforman integratutako doako CI/CD tresna bat ere bada.

▍2. GitLab Pages eta Jekyll-en laguntza

Jekyll GitLab Pages sistemaren barruan erabil daitekeen gune-sorgailu estatiko bat da, GitLab biltegietan oinarritutako guneak sortzeko. Sistemak iturri-materialak hartzen ditu eta horietan oinarrituta prest egindako gune estatiko bat sortzen du. Horrelako guneen itxura eta ezaugarriak kontrola ditzakezu fitxategia editatuz _config.yml, Jekyllek erabilia.

▍3. Proiektuak planifikatzeko gaitasunak

Proiektuen faseak planifikatzeko gaitasunari esker, arazoak eta haien taldeen jarraipena egiteko erosotasuna handitzen da. Horri esker, proiektuen lanaren antolakuntza kudeatzeko, haien ezarpena data zehatz batean planifikatzeko aukera ematen du.

▍4. CI korrikalarien eskalatze automatikoa

Zeregin zehatzak egiteaz arduratzen diren korrikalarien eskalatze automatikoari esker, asko aurreztu dezakezu zerbitzariaren gaitasunak alokatzeko kostuan. Hau oso garrantzitsua da, batez ere proiektuak paraleloan probatzen diren inguruneei dagokienez. Gainera, hau garrantzitsua da hainbat biltegiz osatutako proiektu handietarako.

▍5. Arazoak jarraitzeko tresnak

GitLab-en arazoen jarraipena egiteko gaitasun indartsuek kode irekiko proiektu asko plataforma erabiltzera eraman dute. GitLab CI/CD-k kode-adar ezberdinen proba paraleloak ahalbidetzen ditu. Testen emaitzak sistemaren interfazean eroso aztertzen dira. Honek GitLab CI/CD bereizten du Jenkinsetik.

▍6. Biltegietarako sarbidea mugatzea

GitLab plataformak biltegietarako sarbidea mugatzea onartzen du. Esaterako, biltegi batean proiektu batean kolaboratzen dutenei beren roletarako egokiak diren baimenak eslei diezazkiekete. Hau bereziki egia da proiektu korporatiboetan.

▍7. Komunitatearen laguntza aktiboa

GitLab-en inguruan komunitate aktibo bat garatu da, plataforma honen eta bere tresnen garapenean laguntzen duena, bereziki, GitLab CI / CD. GitLab CI/CD eta GitLab-en integrazio sakonak, besteak beste, GitLab CI/CD-rekin lan egitean sortzen diren galderei erantzunak aurkitzea errazten du.

▍8. Bertsioak kontrolatzeko sistema ezberdinetarako laguntza

GitLab CI/CD GitLab biltegietan ostatatutako kodea baino gehiagorekin lan egin dezakeen sistema da. Adibidez, kodea GitHub biltegi batean gorde daiteke, eta CI / CD kanalizazioa GitLab-en oinarrituta antolatu daiteke GitLab CI / CD erabiliz.

Jenkins eta GitLab CI/CD konparazioa

Jenkins eta GitLab CI/CD tresna oso onak dira, biak gai dira CI/CD kanalizazioa ondo funtzionatzeko. Baina konparatzen badituzu, ikusten da, modu askotan antzekoak izan arren, elkarrengandik nolabait desberdinak direla.

Karakterizazioa
Jenkins
GitLab CI/CD

Kode irekia edo iturri itxia
kode irekia
kode irekia

Instalazio-
Beharrezkoa.
Ez da beharrezkoa GitLab plataformaren eginbide integratua baita.

Ezaugarri bereziak
Plugin laguntza.
Bertsio-kontrol sisteman integrazio sakona.

Lagundu
Falta da.
Eskuragarri.

Instalazioa eta konfigurazioa
Zailtasunak ez du eragiten
Zailtasunak ez du eragiten

Sistemaren autohedapena
Hau da sistema erabiltzeko modu bakarra.
Onartua.

CI/CD kanalizazioak sortzea
Onartuta, Jenkins Pipeline erabiliz.
Onartua.

Aplikazioen errendimenduaren jarraipena
Falta da.
Eskuragarri.

Ekosistema
1000 plugin baino gehiago daude.
Sistema GitLab-en barruan garatzen ari da.

API
API sistema aurreratu bat onartzen du.
Proiektuetan integrazio sakonagorako API bat eskaintzen du.

JavaScript euskarria
Eskuragarri.
Eskuragarri.

Beste tresnekin integratzea
Beste tresna eta plataformekin (Slack, GitHub) integrazioa onartzen du.
Hirugarrenen sistemekin integratzeko tresna asko, bereziki GitHub eta Kubernetesekin.

Kodearen kalitate-kontrola
Onartua - SonarQube plugina eta beste plugin batzuk erabiliz.
Onartua.

Jenkins eta GitLab CI/CD arteko desberdintasunak

Jenkins eta GitLab CI/CD deskribatu eta alderatu ondoren, arreta dezagun DevOps tresna hauen arteko desberdintasunetan. Desberdintasun hauek ezagutzeak tresna horietako bat bestea baino nahiago duten horiek ulertzen lagunduko dizu.

  • GitLab CI/CD-k Git biltegiak guztiz kontrola ditzake. Biltegiko adarrak eta beste zenbait ezaugarri kudeatzeaz ari gara. Baina Jenkinsek, biltegiekin lan egin dezakeen arren, ez du GitLab CI / CD-ren kontrol maila bera ematen.
  • Jenkins doako kode irekiko proiektu bat da. Aukeratzen duenak modu independentean zabaltzen du. Eta GitLab CI / CD GitLab plataforman sartuta dago, hau giltza eskuan dagoen irtenbidea da.
  • GitLab CI/CD-k proiektuaren mailan funtzionatzen duten zereginak kudeatzeko tresna aurreratuak onartzen ditu. Jenkinsen alde hau gutxiago garatuta dago.

Jenkins eta GitLab CI/CD: indarguneak eta ahuleziak

Orain Jenkins eta GitLab CI/CD buruzko ideia batzuk dituzu. Orain, tresna hauek are hobeto ezagutzeko, ikus ditzagun haien indarguneak eta ahulguneak. Suposatzen dugu dagoeneko erabaki duzula zein tresna behar duzun. Zorionez, atal honek zure burua probatzeko aukera emango dizu.

▍Jenkinsen indarguneak

  • Plugin kopuru handia.
  • Tresnaren instalazioaren kontrol osoa.
  • Korrikalarien arazketa sinplea.
  • Nodoen konfigurazio erraza.
  • Kode erraza zabaltzea.
  • Kredentzialak kudeatzeko sistema oso ona.
  • Malgutasuna eta aldakortasuna.
  • Hainbat programazio-lengoaiarako laguntza.
  • Sistema ulergarria da maila intuitiboan.

▍Jenkinsen ahuleziak

  • Pluginak erabiltzea zaila izan daiteke.
  • Jenkins proiektu txikietan erabiltzean, zuk zeuk konfiguratzeko behar den denbora arrazoirik gabe handia izan daiteke.
  • CI/CD kateei buruzko informazio analitiko orokorraren falta.

▍GitLab CI/CD-ren indarguneak

  • Docker-ekin integrazio ona.
  • Korrikalarien eskalatze sinplea.
  • CI/CD kanalizazioaren faseen parte diren zereginen exekuzio paraleloa.
  • Zeregin-erlazioak ezartzerakoan zuzendutako grafiko aziklikoaren eredua erabiltzea.
  • Eskalagarritasun maila altua korrikalarien exekuzio paraleloa egiteko aukera dela eta.
  • Zereginak gehitzeko erraztasuna.
  • Gatazkaren konponbide sinplea.
  • Segurtasun sistema fidagarria.

▍GitLab CI/CDren ahuleziak

  • Zeregin bakoitzerako, artefaktuak deskribatu eta kargatu/deskargatu behar dituzu.
  • Ezin dituzu probatu adarrak bateratzearen emaitzak benetan batu aurretik.
  • CI / CD kanalizazioaren faseak deskribatzean, oraindik ezin da horietako etapa indibidualak bereiztea.

Emaitzak

Jenkinsek eta GitLab CI/CDek indarguneak eta ahuleziak dituzte. Zer aukeratu galderaren erantzuna proiektu jakin baten behar eta ezaugarrien araberakoa da. Gaur berrikusitako CI/CD tresnetako bakoitzak ezaugarri batzuk ditu, nahiz eta tresna horiek arazo bera konpontzeko sortu diren. Aldi berean, Jenkins tresna autonomoa da eta GitLab CI / CD kodean lankidetzan aritzeko diseinatutako plataforma baten parte da.

CI / CD sistema bat aukeratzerakoan, bere gaitasunez gain, merezi du harekin lotu daitezkeen kostuak kontuan hartzea eta proiektua onartzen duten DevOps ingeniariak zerekin lan egiten duten ohituta.

Zein CI/CD tresnak erabiltzen dituzu?

Battle of Jenkins eta GitLab CI/CD

Battle of Jenkins eta GitLab CI/CD

Iturria: www.habr.com

Gehitu iruzkin berria