Batalo de Jenkins kaj GitLab CI/CD

En la lasta jardeko, signifaj progresoj estis faritaj en la evoluo de iloj por kontinua integriĝo (Continuous Integration, CI) kaj kontinua deplojo (Continuous Delivery, KD). La disvolviĝo de teknologioj por integri programaron disvolviĝo kaj operacio (Evoluo-Operacioj, DevOps) kaŭzis rapidan pliiĝon de postulo je CI / KD-iloj. Ekzistantaj solvoj estas konstante plibonigataj, provante daŭrigi kun la tempoj, iliaj novaj versioj estas liberigitaj, en la mondo de kvalita certiga programaro (Kvalito Assurance, QA), multaj novaj produktoj konstante aperas. Kun tia riĉeco de elekto, elekti la ĝustan ilon ne estas facila tasko.

Batalo de Jenkins kaj GitLab CI/CD

Inter ĉiuj ekzistantaj CI/KD-iloj, estas du projektoj, kiuj certe indas atenti iu, kiu serĉas ion el ĉi tiu areo. Ni parolas pri Jenkins kaj la ilo GitLab CI / KD, kiu estas parto de la platformo GitLab. Jenkins havas pli ol 16000 steloj en GitHub. La deponejo de GitLab ĉe gitlab.com gajnis iom pli 2000 steloj. Se ni komparas la popularecon de la deponejoj, rezultas, ke Jenkins gajnis 8 fojojn pli da steloj ol la platformo, kiu inkluzivas GitLab CI / KD. Sed kiam vi elektas CI / KD-ilon, ĉi tio estas malproksime de la sola indikilo, pri kiu vi devas atenti. Estas multaj aliaj, kaj ĉi tio klarigas kial en multaj komparoj, Jenkins kaj GitLab CI / CD estas tre proksimaj unu al la alia.

Prenu, ekzemple, datumojn de la platformo G2, kiu amasigas recenzojn pri ampleksa vario de produktoj kaj la taksojn, kiujn la uzantoj donas al ili. Jen la averaĝa takso Jenkins, surbaze de 288 recenzoj, estas 4,3 steloj. Ho ho GitLab estas 270 recenzoj, la averaĝa takso por ĉi tiu ilo estas 4,4 steloj. Ni ne eraros dirante, ke Jenkins kaj GitLab CI/CD konkuras unu kun la alia en egalaj kondiĉoj. Estas interese rimarki, ke la projekto Jenkins aperis en 2011 kaj ekde tiam ĝi estas ŝatata ilo por testantoj. Sed samtempe, la projekto GitLab CI/CD, lanĉita en 2014, prenis sian pozicion, tre altan, danke al la altnivelaj funkcioj ofertitaj de ĉi tiu platformo.

Se ni parolas pri la populareco de Jenkins kompare kun aliaj similaj platformoj, ni rimarkas, ke ni, publikiginte artikolon komparantan la platformojn Travis CI kaj Jenkins, aranĝis enketon. 85 uzantoj partoprenis en ĝi. Respondantoj estis petitaj elekti la CI/KD-ilon, kiun ili plej ŝatas. 79% elektis Jenkins, 5% elektis Travis CI, kaj 16% indikis, ke ili preferas aliajn ilojn.

Batalo de Jenkins kaj GitLab CI/CD
Enketaj rezultoj

Inter aliaj CI/CD-iloj, GitLab CI/CD estis menciita plej ofte.

Se vi estas serioza pri DevOps, tiam vi devas zorge elekti la taŭgajn ilojn, konsiderante la specifaĵojn de la projekto, ĝian buĝeton kaj aliajn postulojn. Por helpi vin fari la ĝustan elekton, ni revizios Jenkins kaj GitLab CI/CD. Ĉi tio espereble helpos vin fari la ĝustan elekton.

Enkonduko al Jenkins

Batalo de Jenkins kaj GitLab CI/CD
Jenkins estas konata, fleksebla CI/KD-ilo dizajnita por aŭtomatigi multajn taskojn ligitajn al programaraj projektoj. Jenkins estas skribita tute en Java kaj liberigita sub la MIT-licenco. Ĝi havas potencan aron da funkcioj celantaj aŭtomatigi la taskojn asociitajn kun konstruado, testado, deplojado, integriĝo kaj liberigo de programaro. Ĉi tiu ilo povas esti uzata en diversaj operaciumoj. Ĉi tiuj inkluzivas macOS, Vindozon kaj multajn Linuksajn distribuojn kiel OpenSUSE, Ubuntu kaj Red Hat. Estas instalaĵpakaĵoj por Jenkins desegnitaj por diversaj OS-oj, ĉi tiu ilo povas esti instalita sur Docker kaj en iu ajn sistemo, kiu havas JRE (Java Runtime Environment).

La Jenkins-programistoj kreis alian projekton, Jenkins X, kiu estas desegnita por funkcii en Kubernetes-medio. Jenkins X integras Helm, la Jenkins CI/KD-servilon, Kubernetes, kaj aliajn ilojn por konstrui CI/KD-duktojn, kiuj sekvas DevOps plej bonajn praktikojn. Ekzemple, GitOps estas uzata ĉi tie.

Oni povas aldoni al la trezorejo de la avantaĝoj de Jenkins la fakton, ke ĝiaj skriptoj estas tre bone strukturitaj, kompreneblaj kaj facile legeblaj. La Jenkins-teamo kreis ĉirkaŭ 1000 kromaĵojn, kiuj celas organizi la interagadon de Jenkins kun ampleksa vario de teknologioj. Skriptoj povas uzi aŭtentigajn sistemojn, kiuj, ekzemple, permesas vin konekti al diversaj fermitaj sistemoj.

Dum la funkciado de la dukto Jenkins, vi povas observi kio okazas ĉe ĉiu paŝo, ĉu certaj etapoj de laboro estis kompletigitaj sukcese aŭ ne. Vi povas spekti ĉion ĉi, tamen, sen uzi certan grafikan interfacon, sed uzante la kapablojn de la terminalo.

Trajtoj de Jenkins

Inter la konataj trajtoj de Jenkins estas facileco de aranĝo, alta nivelo de aŭtomatigo de diversaj operacioj kaj bonega dokumentado. Se ni parolas pri solvado de taskoj de DevOps, jen Jenkins estas konsiderata tre fidinda ilo, uzante kiu, kiel regulo, ne havas sencon atente kontroli la tutan procezon de projekt-prilaborado. Ĉi tio ne estas la kazo kun aliaj CI/CD-iloj. Ni parolu pri iuj el la plej gravaj trajtoj de Jenkins.

▍1. Senpaga, malferma fonto, plurplatforma subteno

Jenkins povas funkcii per platformoj macOS, Vindozo kaj Linukso. Ĝi ankaŭ povas funkcii en Docker-medio, kiu ebligas al vi organizi unuforman kaj rapidan plenumon de aŭtomatigitaj taskoj. Ĉi tiu ilo ankaŭ povas funkcii kiel servleto en Java-ebligitaj ujoj kiel Apache Tomcat kaj GlassFish. Instalado de Jenkins kvalite dokumentita.

▍2. Evoluinta kromsistemo ekosistemo

La aldonaĵa ekosistemo de Jenkins ŝajnas esti multe pli matura ol la aldonaĵaj ekosistemoj de aliaj CI/KD-iloj. Nuntempe ekzistas pli ol 1500 aldonaĵoj por Jenkins. Ĉi tiuj kromaĵoj celas solvi ampleksan gamon de taskoj, kun ilia helpo vi povas aŭtomatigi diversajn projektojn. La riĉeco de senpagaj aldonaĵoj elekteblaj signifas, ke se vi uzas Jenkins, vi ne devas aĉeti multekostajn pagitajn kromaĵojn. Estas ebleco integriĝo Jenkins kun multaj DevOps-iloj.

▍3. Facila instalado kaj agordo

Jenkins estas sufiĉe facila por instali kaj agordi. Samtempe, la procezo de ĝisdatigo de la sistemo ankaŭ estas tre oportuna. Ĉi tie, denove, indas mencii la kvaliton de la dokumentado, ĉar en ĝi vi povas trovi respondojn al diversaj demandoj rilataj al instalo kaj agordo de Jenkins.

▍4. Amika komunumo

Kiel jam menciite, Jenkins estas malfermkoda projekto, kies ekosistemo inkluzivas grandegan nombron da kromprogramoj. Granda komunumo de uzantoj kaj programistoj formiĝis ĉirkaŭ Jenkins por helpi evoluigi la projekton. La komunumo estas unu el la faktoroj, kiuj pelas la evoluon de Jenkins.

▍5. Havebleco de REST API

Laborante kun Jenkins, vi povas uzi la REST API, kiu pligrandigas la kapablojn de la sistemo. API por fora aliro al la sistemo estas prezentita en tri versioj: XML, JSON kun JSONP-subteno, Python. tie Dokumenta paĝo kovranta detalojn pri laborado kun la Jenkins REST API.

▍6. Subteno por paralela plenumado de taskoj

Jenkins subtenas paraleligon de DevOps-taskoj. Ĝi povas esti facile integrita kun rilataj iloj kaj ricevi sciigojn pri la rezultoj de taskoj. Kodtestado povas esti akcelita organizante paralelan konstruon de la projekto uzante malsamajn virtualajn maŝinojn.

▍7. Subteno por laboro en distribuitaj medioj

Jenkins permesas vin organizi distribuitajn konstruaĵojn uzante plurajn komputilojn. Ĉi tiu funkcio estas aplikebla en grandaj projektoj kaj uzas skemon de laboro, laŭ kiu ekzistas unu majstra Jenkins-servilo kaj pluraj sklavaj maŝinoj. Sklavaj maŝinoj ankaŭ povas esti uzataj en situacioj, kie necesas organizi testadon de projekto en malsamaj medioj. Ĉi tiuj trajtoj apartigas Jenkins de aliaj similaj projektoj.

Enkonduko al GitLab

Batalo de Jenkins kaj GitLab CI/CD
GitLab CI/KD povas esti nomita unu el la plej novaj kaj plej amataj DevOps-iloj. Ĉi tiu senpaga malfermfonta ilo estas enkonstruita en la versikontrolsistemon de GitLab. La platformo GitLab havas komunuman version, ĝi subtenas administradon de deponejo, ilojn por spuri aferojn, organizon pri revizio de kodo, mekanismojn orientitajn al dokumentaro. Firmaoj povas instali GitLab loke, ligante ĝin al Active Directory kaj LDAP-serviloj por sekura uzantrajtigo kaj aŭtentigo.

tie Videolernilo por helpi vin lerni kiel krei CI/KD-duktojn uzante GitLab CI/KD-kapablojn.

GitLab CI/CD estis origine publikigita kiel memstara projekto, sed en 2015 tiu aro de iloj estis integrita en GitLab 8.0. Ununura GitLab CI/CD-servilo povas subteni pli ol 25000 uzantojn. Surbaze de tiaj serviloj, vi povas krei sistemojn tre disponeblajn.

GitLab CI/CD kaj la ĉefa GitLab-projekto estas skribitaj en Ruby and Go. Ili estas liberigitaj sub la MIT-licenco. GitLab CI/CD, krom la kutimaj trajtoj de CI/CD-iloj, ankaŭ subtenas kromajn funkciojn rilatajn, ekzemple, al laborplanado.

Integri GitLab CI/CD en projekton estas tre facila. Kiam vi uzas GitLab CI/CD, la procezo de prilaborado de projektkodo estas dividita en stadiojn, ĉiu el kiuj povas konsisti el pluraj taskoj faritaj en certa ordo. Taskoj povas esti fajnagorditaj.

Taskoj povas ruliĝi paralele. Post agordo de la sekvenco de stadioj kaj taskoj, la CI/CD-dukto estas preta iri. Vi povas kontroli ĝian progreson monitorante la staton de taskoj. Kiel rezulto, uzi GitLab CI / KD estas tre oportuna, eble pli oportuna ol aliaj similaj iloj.

Trajtoj de GitLab CI/CD kaj GitLab

GitLab CI/CD estas unu el la plej popularaj DevOps-iloj. La projekto distingiĝas per altkvalita dokumentaro, ĝiaj funkcioj estas facilaj kaj oportunaj por uzi. Se vi ankoraŭ ne konas GitLab CI/CD, la sekva listo de la funkcioj de ĉi tiu ilo donos al vi ĝeneralan ideon pri tio, kion vi povas atendi de ĝi. Oni devas rimarki, ke multaj el ĉi tiuj funkcioj rilatas al la platformo GitLab mem, en kiu GitLab CI/KD estas integrita.

▍1. Populareco

GitLab CI/CD estas relative nova ilo, kiu trovis vastan uzon. GitLab CI/KD malrapide fariĝis tre populara CI/KD-ilo uzata por aŭtomata testado kaj programaro deplojo. Ĝi estas simpla agordi. Ĝi ankaŭ estas senpaga CI/KD-ilo konstruita en la platformon GitLab.

▍2. Subteno por GitLab Pages kaj Jekyll

Jekyll estas senmova reteja generatoro, kiu povas esti uzata ene de la GitLab Pages-sistemo por krei retejojn bazitajn sur GitLab-deponejoj. La sistemo prenas la fontmaterialojn kaj generas pretan statikan retejon bazitan sur ili. Vi povas kontroli la aspekton kaj funkciojn de tiaj retejoj redaktante la dosieron _config.yml, uzita fare de Jekyll.

▍3. Projektplanadkapabloj

Danke al la kapablo plani la stadiojn de projektoj, la oportuno de spurado de problemoj kaj iliaj grupoj pliiĝas. Ĉi tio permesas al vi administri la organizon de laboro en projektoj, plani ilian efektivigon en specifa dato.

▍4. Aŭtomata skalado de CI-kurantoj

Danke al la aŭtomata skalo de kuristoj respondecaj por plenumi specifajn taskojn, vi povas ŝpari multe pri la kosto de luado de servilaj kapabloj. Ĉi tio estas tre grava, precipe kiam temas pri medioj, kie projektoj estas testataj paralele. Krome, ĉi tio estas grava por grandaj projektoj konsistantaj el pluraj deponejoj.

▍5. Problemaj spuriloj

La potencaj temoj spurantaj kapabloj de GitLab igis multajn malfermfontajn projektojn uzi la platformon. GitLab CI/CD permesas paralelan testadon de malsamaj kodbranĉoj. Testrezultoj estas oportune analizitaj en la sistema interfaco. Ĉi tio apartigas GitLab CI/CD de Jenkins.

▍6. Limigante aliron al deponejoj

La platformo GitLab subtenas limigi aliron al deponejoj. Ekzemple, tiuj, kiuj kunlaboras pri projekto en deponejo, povas ricevi permesojn taŭgajn por siaj roloj. Ĉi tio validas precipe por kompaniaj projektoj.

▍7. Aktiva komunuma subteno

Aktiva komunumo formiĝis ĉirkaŭ GitLab, kiu kontribuas al la evoluo de ĉi tiu platformo kaj ĝiaj iloj, precipe, GitLab CI / KD. Profunda integriĝo de GitLab CI/CD kaj GitLab, interalie, faciligas trovi respondojn al demandoj, kiuj aperas kiam vi laboras kun GitLab CI/CD.

▍8. Subteno por diversaj versio-kontrolsistemoj

GitLab CI/CD estas sistemo kiu povas funkcii kun pli ol nur kodo gastigita en GitLab-deponejoj. Ekzemple, la kodo povas esti stokita en GitHub-deponejo, kaj la CI/KD-dukto povas esti organizita surbaze de GitLab uzante GitLab CI/KD.

Komparo de Jenkins kaj GitLab CI/CD

Jenkins kaj GitLab CI/CD estas tre bonaj iloj, kiuj ambaŭ kapablas fari la CI/KD-dukton glate funkcii. Sed se ni komparas ilin, montriĝas ke, kvankam ili estas multrilate similaj, ili diferencas unu de la alia iel.

Характеристика
Jenkins
GitLab CI/KD

Malferma fonto aŭ fermita fonto
malferma fonto
malferma fonto

fikso
Bezonata.
Ne necesas ĉar ĉi tio estas enkonstruita funkcio de la platformo GitLab.

Unika Trajtoj
Kromsubteno.
Profunda integriĝo en versio-kontrolsistemo.

subteno
Mankas.
Disponebla.

Instalado kaj agordo
Malfacilaĵoj ne kaŭzas
Malfacilaĵoj ne kaŭzas

Mem-deplojo de la sistemo
Ĉi tiu estas la sola maniero uzi la sistemon.
Subtenita.

Kreante CI/CD-duktojn
Subtenita, uzante Jenkins Pipeline.
Subtenita.

Monitorado de agado de aplikaĵo
Mankas.
Disponebla.

Ekosistemo
Estas pli ol 1000 kromaĵojn.
La sistemo estas disvolvita ene de GitLab.

API
Subtenas altnivelan API-sistemon.
Proponas API por pli profunda integriĝo en projektojn.

JavaScript subteno
Disponebla.
Disponebla.

Integriĝo kun aliaj iloj
Integriĝo kun aliaj iloj kaj platformoj estas subtenata (Slack, GitHub).
Multaj iloj por integriĝo kun triaj sistemoj, precipe - kun GitHub kaj Kubernetes.

Koda kvalitkontrolo
Subtenita - uzante la SonarQube kromaĵojn kaj aliajn kromaĵojn.
Subtenita.

Diferencoj inter Jenkins kaj GitLab CI/CD

Priskribinte kaj komparinte Jenkins kaj GitLab CI/CD, ni koncentriĝu pri la diferencoj inter ĉi tiuj DevOps-iloj. Koni ĉi tiujn diferencojn helpos vin kompreni tiujn, kiuj preferas unu el ĉi tiuj iloj super la alia.

  • GitLab CI/CD povas plene kontroli Git-deponejojn. Ni parolas pri administrado de deponejoj kaj iuj aliaj funkcioj. Sed Jenkins, kvankam ĝi povas funkcii kun deponejoj, ne donas la saman nivelon de kontrolo super ili kiel GitLab CI / KD.
  • Jenkins estas senpaga malfermkoda projekto. Tiu, kiu elektas ĝin, deplojas ĝin sendepende. Kaj GitLab CI / KD estas inkluzivita en la platformo GitLab, ĉi tio estas ŝlosila solvo.
  • GitLab CI/CD subtenas altnivelajn ilojn pri administrado de taskoj, kiuj funkcias ĉe la projektnivelo. Ĉi tiu flanko de Jenkins estas malpli evoluinta.

Jenkins kaj GitLab CI/CD: fortoj kaj malfortoj

Nun vi havas iom da ideo pri Jenkins kaj GitLab CI/CD. Nun, por ke vi eĉ pli bone konatiĝu kun ĉi tiuj iloj, ni rigardu iliajn fortojn kaj malfortojn. Ni supozas, ke vi jam decidis, kiun ilon vi bezonas. Espereble, ĉi tiu sekcio permesos vin testi vin.

▍Fortoj de Jenkins

  • Granda nombro da kromaĵojn.
  • Plena kontrolo de ilo-instalado.
  • Simpla elpurigo de kuristoj.
  • Facila noda agordo.
  • Facila koda deplojo.
  • Tre bona sistemo de administrado de akreditaĵoj.
  • Fleksebleco kaj ĉiuflankeco.
  • Subteno por diversaj programlingvoj.
  • La sistemo estas komprenebla sur intuicia nivelo.

▍Malfortoj de Jenkins

  • Kromaĵoj povas esti malfacilaj uzi.
  • Kiam vi uzas Jenkins en malgrandaj projektoj, la tempo bezonata por mem agordi ĝin povas esti senracie granda.
  • Manko de ĝeneralaj analizaj informoj pri CI/KD-ĉenoj.

▍Fortoj de GitLab CI/CD

  • Bona integriĝo kun Docker.
  • Simpla skalo de kuristoj.
  • Paralela plenumo de taskoj kiuj estas parto de la stadioj de la CI/CD-dukto.
  • Uzante la direktitan aciklan grafeomodelon dum starigado de taskaj rilatoj.
  • Alta nivelo de skaleblo pro la ebleco de paralela ekzekuto de kuristoj.
  • Facileco aldoni taskojn.
  • Simpla konflikta solvado.
  • Fidinda sekureca sistemo.

▍Malfortoj de GitLab CI/CD

  • Por ĉiu tasko, vi devas priskribi kaj alŝuti / elŝuti artefaktojn.
  • Vi ne povas testi la rezultojn de kunfandado de branĉoj antaŭ ol ili estas efektive kunfanditaj.
  • Priskribante la stadiojn de la CI / KD-dukto, ankoraŭ ne eblas distingi individuajn stadiojn en ili.

Rezultoj

Kaj Jenkins kaj GitLab CI/CD havas fortojn kaj malfortojn. La respondo al la demando pri tio, kion elekti dependas de la bezonoj kaj karakterizaĵoj de aparta projekto. Ĉiu el la CI/KD-iloj reviziitaj hodiaŭ havas certajn funkciojn, kvankam ĉi tiuj iloj estis kreitaj por solvi la saman problemon. Samtempe, Jenkins estas memstara ilo, kaj GitLab CI / KD estas parto de platformo dizajnita por kunlabori pri kodo.

Elektante CI / KD-sistemon, krom ĝiaj kapabloj, indas konsideri la kostojn, kiuj povas esti asociitaj kun ĝi, kaj kun kio ĝuste DevOps-inĝenieroj, kiuj subtenas la projekton, kutimas labori.

Kiajn CI/KD-iloj vi uzas?

Batalo de Jenkins kaj GitLab CI/CD

Batalo de Jenkins kaj GitLab CI/CD

fonto: www.habr.com

Aldoni komenton