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.
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
Hartu, adibidez, G2 plataformako datuak, askotariko produktuen iritziak eta erabiltzaileek ematen dizkieten balorazioak pilatzen dituena. Hona hemen batez besteko balorazioa
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.
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
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
β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
β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.
β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
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?
Iturria: www.habr.com