Slag van Jenkins en GitLab CI/CD

In die afgelope dekade is aansienlike vordering gemaak in die ontwikkeling van instrumente vir deurlopende integrasie (Deurlopende integrasie, CI) en deurlopende ontplooiing (Deurlopende aflewering, CD). Die ontwikkeling van tegnologieë vir die integrasie van sagteware-ontwikkeling en -bedryf (Development Operations, DevOps) het gelei tot 'n vinnige toename in die vraag na CI / CD-gereedskap. Bestaande oplossings word voortdurend verbeter, probeer om tred te hou met die tye, hul nuwe weergawes word vrygestel, in die wêreld van kwaliteitversekeringsagteware (Quality Assurance, QA), verskyn baie nuwe produkte voortdurend. Met so 'n magdom keuses is dit nie 'n maklike taak om die regte gereedskap te kies nie.

Slag van Jenkins en GitLab CI/CD

Tussen al die bestaande CI/CD-instrumente is daar twee projekte wat beslis die moeite werd is om aandag te gee aan iemand wat iets uit hierdie area soek. Ons praat oor Jenkins en die GitLab CI / CD-instrument, wat deel is van die GitLab-platform. Jenkins het meer as 16000 sterre op GitHub. Die GitLab-bewaarplek op gitlab.com het 'n bietjie meer behaal 2000 sterre. As ons die gewildheid van die bewaarplekke vergelyk, blyk dit dat Jenkins 8 keer meer sterre behaal het as die platform, wat GitLab CI / CD insluit. Maar wanneer u 'n CI / CD-instrument kies, is dit ver van die enigste aanwyser waaraan u moet aandag gee. Daar is baie ander, en dit verklaar hoekom Jenkins en GitLab CI / CD in baie vergelykings baie na aan mekaar is.

Neem byvoorbeeld data van die G2-platform, wat resensies van 'n wye verskeidenheid produkte en die graderings wat gebruikers hulle gee, versamel. Hier is die gemiddelde gradering Jenkins, gebaseer op 288 resensies, is 4,3 sterre. O, o GitLab daar is 270 resensies, die gemiddelde gradering vir hierdie instrument is 4,4 sterre. Ons sal ons nie misgis om te sê dat Jenkins en GitLab CI / CD op gelyke terme met mekaar meeding nie. Dit is interessant om daarop te let dat die Jenkins-projek in 2011 verskyn het en sedertdien is dit 'n gunsteling hulpmiddel vir toetsers. Maar terselfdertyd het die GitLab CI / CD-projek, wat in 2014 van stapel gestuur is, sy posisie ingeneem, baie hoog, danksy die gevorderde kenmerke wat deur hierdie platform aangebied word.

As ons praat oor die gewildheid van Jenkins in vergelyking met ander soortgelyke platforms, let ons daarop dat ons, nadat ons 'n artikel gepubliseer het waarin die Travis CI- en Jenkins-platforms vergelyk word, 'n opname gereël het. 85 gebruikers het daaraan deelgeneem. Respondente is gevra om die CI/CD-instrument te kies waarvan hulle die meeste hou. 79% het Jenkins gekies, 5% het Travis CI gekies, en 16% het aangedui dat hulle ander gereedskap verkies.

Slag van Jenkins en GitLab CI/CD
Meningspeiling resultate

Onder ander CI/CD-instrumente is GitLab CI/CD die meeste genoem.

As jy ernstig is oor DevOps, moet jy die toepaslike gereedskap noukeurig kies, met inagneming van die besonderhede van die projek, sy begroting en ander vereistes. Om jou te help om die regte keuse te maak, gaan ons Jenkins en GitLab CI/CD hersien. Dit sal jou hopelik help om die regte keuse te maak.

Inleiding tot Jenkins

Slag van Jenkins en GitLab CI/CD
Jenkins is 'n bekende, buigsame CI/CD-instrument wat ontwerp is om baie take wat verband hou met sagtewareprojekte te outomatiseer. Jenkins is geheel en al in Java geskryf en vrygestel onder die MIT-lisensie. Dit het 'n kragtige stel kenmerke wat daarop gemik is om die take wat verband hou met die bou, toets, ontplooiing, integrasie en vrystelling van sagteware te outomatiseer. Hierdie instrument kan op verskeie bedryfstelsels gebruik word. Dit sluit in macOS, Windows en baie Linux-verspreidings soos OpenSUSE, Ubuntu en Red Hat. Daar is installasiepakkette vir Jenkins wat ontwerp is vir verskeie bedryfstelsels, hierdie instrument kan op Docker geïnstalleer word en op enige stelsel wat 'n JRE (Java Runtime Environment) het.

Die Jenkins-ontwikkelaars het nog 'n projek geskep, Jenkins X, wat ontwerp is om in 'n Kubernetes-omgewing te werk. Jenkins X integreer Helm, Jenkins CI/CD Server, Kubernetes en ander gereedskap om CI/CD-pyplyne te bou wat DevOps se beste praktyke volg. GitOps word byvoorbeeld hier gebruik.

'n Mens kan by die skatkis van die voordele van Jenkins die feit voeg dat sy skrifte baie goed gestruktureer, verstaanbaar en maklik leesbaar is. Die Jenkins-span het ongeveer 1000 inproppe geskep wat daarop gemik is om die interaksie van Jenkins met 'n wye verskeidenheid tegnologieë te organiseer. Skripte kan stawingstelsels gebruik, wat jou byvoorbeeld toelaat om aan verskeie geslote stelsels te koppel.

Tydens die werking van die Jenkins-pyplyn kan jy waarneem wat by elke stap gebeur, of sekere stadiums van werk suksesvol voltooi is of nie. Jy kan dit alles kyk, egter sonder om 'n sekere grafiese koppelvlak te gebruik, maar om die vermoëns van die terminale te gebruik.

Kenmerke van Jenkins

Onder die bekende kenmerke van Jenkins is die gemak van opstelling, 'n hoë vlak van outomatisering van verskeie bedrywighede en uitstekende dokumentasie. As ons praat oor die oplossing van DevOps-take, dan word Jenkins hier as 'n baie betroubare instrument beskou, wat dit as 'n reël nie sin maak om die hele proses van projekverwerking noukeurig te monitor nie. Dit is nie die geval met ander CI/CD-instrumente nie. Kom ons praat oor sommige van die belangrikste kenmerke van Jenkins.

▍1. Gratis, open source, multi-platform ondersteuning

Jenkins kan op macOS-, Windows- en Linux-platforms werk. Dit kan ook in 'n Docker-omgewing funksioneer, wat u toelaat om eenvormige en vinnige uitvoering van outomatiese take te organiseer. Hierdie instrument kan ook as 'n servlet in Java-geaktiveerde houers soos Apache Tomcat en GlassFish loop. Installasie van Jenkins kwalitatief gedokumenteer.

▍2. Ontwikkelde inprop-ekosisteem

Die Jenkins-inprop-ekosisteem blyk baie meer volwasse te wees as die inprop-ekosisteme van ander CI/CD-instrumente. Daar is tans meer as 1500 plugins vir Jenkins. Hierdie inproppe is daarop gemik om 'n wye verskeidenheid take op te los, met hul hulp kan u 'n verskeidenheid projekte outomatiseer. Die rykdom van gratis plugins om van te kies beteken dat as jy Jenkins gebruik, jy nie duur betaalde plugins hoef te koop nie. Daar is 'n moontlikheid integrasie Jenkins met baie DevOps-nutsgoed.

▍3. Maklike installasie en opstelling

Jenkins is redelik maklik om te installeer en op te stel. Terselfdertyd is die proses van opdatering van die stelsel ook baie gerieflik. Hier is dit weer die moeite werd om die kwaliteit van die dokumentasie te noem, want daarin kan u antwoorde vind op 'n verskeidenheid vrae wat verband hou met die installering en konfigurasie van Jenkins.

▍4. Vriendelike gemeenskap

Soos reeds genoem, is Jenkins 'n oopbronprojek, waarvan die ekosisteem 'n groot aantal inproppe insluit. ’n Groot gemeenskap van gebruikers en ontwikkelaars het rondom Jenkins ontwikkel om die projek te help ontwikkel. Die gemeenskap is een van die faktore wat die ontwikkeling van Jenkins dryf.

▍5. Beskikbaarheid van REST API

Terwyl u met Jenkins werk, kan u die REST API gebruik, wat die vermoëns van die stelsel uitbrei. API vir afstandtoegang tot die stelsel word in drie weergawes aangebied: XML, JSON met JSONP-ondersteuning, Python. Hier Dokumentasiebladsy wat besonderhede oor die werk met die Jenkins REST API dek.

▍6. Ondersteuning vir parallelle uitvoering van take

Jenkins ondersteun parallelisering van DevOps-take. Dit kan maklik geïntegreer word met relevante gereedskap en ontvang kennisgewings oor die resultate van take. Kodetoetsing kan versnel word deur 'n parallelle bou van die projek met behulp van verskillende virtuele masjiene te organiseer.

▍7. Ondersteuning vir werk in verspreide omgewings

Jenkins laat jou toe om verspreide bouwerk te organiseer met behulp van verskeie rekenaars. Hierdie kenmerk is van toepassing op groot projekte en gebruik 'n werkskema, waarvolgens daar een meester Jenkins-bediener en verskeie slawemasjiene is. Slawemasjiene kan ook gebruik word in situasies waar dit nodig is om toetsing van 'n projek in verskillende omgewings te organiseer. Hierdie kenmerke onderskei Jenkins van ander soortgelyke projekte.

Inleiding tot GitLab

Slag van Jenkins en GitLab CI/CD
GitLab CI/CD kan een van die nuutste en mees geliefde DevOps-instrumente genoem word. Hierdie gratis oopbron-instrument is ingebou in die GitLab-weergawebeheerstelsel. Die GitLab-platform het 'n gemeenskapsweergawe, dit ondersteun bewaarplekbestuur, kwessieopsporingsnutsmiddels, kode-oorsigorganisasie, dokumentasie-georiënteerde meganismes. Maatskappye kan GitLab plaaslik installeer, deur dit aan Active Directory en LDAP-bedieners te koppel vir veilige gebruikersmagtiging en -verifikasie.

Hier 'n Video-tutoriaal om jou te help leer hoe om CI/CD-pyplyne te skep deur GitLab CI/CD-vermoëns te gebruik.

GitLab CI/CD is oorspronklik vrygestel as 'n selfstandige projek, maar in 2015 is hierdie stel gereedskap geïntegreer in GitLab 8.0. 'n Enkele GitLab CI/CD-bediener kan meer as 25000 XNUMX gebruikers ondersteun. Op grond van sulke bedieners kan u stelsels skep wat hoogs beskikbaar is.

GitLab CI/CD en die hoof GitLab-projek is in Ruby and Go geskryf. Hulle word vrygestel onder die MIT-lisensie. GitLab CI/CD, benewens die gewone kenmerke van CI/CD-instrumente, ondersteun ook bykomende kenmerke wat byvoorbeeld met werkskedulering verband hou.

Die integrasie van GitLab CI/CD in 'n projek is baie maklik. Wanneer GitLab CI/CD gebruik word, word die projekkodeverwerkingsproses in fases verdeel, wat elk kan bestaan ​​uit verskeie take wat in 'n sekere volgorde uitgevoer word. Take kan verfyn word.

Take kan parallel loop. Nadat die volgorde van stadiums en take opgestel is, is die CI/CD-pyplyn gereed om te gaan. U kan die vordering daarvan monitor deur die status van take te monitor. As gevolg hiervan is die gebruik van GitLab CI / CD baie gerieflik, miskien geriefliker as ander soortgelyke gereedskap.

Kenmerke van GitLab CI/CD en GitLab

GitLab CI/CD is een van die gewildste DevOps-instrumente. Die projek word gekenmerk deur dokumentasie van hoë gehalte, die kenmerke daarvan is maklik en gerieflik om te gebruik. As jy nog nie vertroud is met GitLab CI/CD nie, sal die volgende lys van hierdie instrument se kenmerke jou 'n algemene idee gee van wat jy daarvan kan verwag. Daar moet kennis geneem word dat baie van hierdie kenmerke verband hou met die GitLab-platform self, waarin GitLab CI / CD geïntegreer is.

▍1. Gewildheid

GitLab CI/CD is 'n relatief nuwe instrument wat wydverspreide gebruik gevind het. GitLab CI/CD het stadigaan 'n uiters gewilde CI/CD-instrument geword wat gebruik word vir outomatiese toetsing en sagteware-ontplooiing. Dit is eenvoudig om op te stel. Dit is ook 'n gratis CI/CD-instrument wat in die GitLab-platform ingebou is.

▍2. Ondersteuning vir GitLab Pages en Jekyll

Jekyll is 'n statiese werfgenerator wat binne die GitLab Pages-stelsel gebruik kan word om werwe te skep gebaseer op GitLab-bewaarplekke. Die stelsel neem die bronmateriaal en genereer 'n klaargemaakte statiese webwerf gebaseer op hulle. U kan die voorkoms en kenmerke van sulke werwe beheer deur die lêer te redigeer _config.yml, gebruik deur Jekyll.

▍3. Projekbeplanning vermoëns

Danksy die vermoë om die stadiums van projekte te beplan, verhoog die gemak van die opsporing van probleme en hul groepe. Dit laat jou toe om die organisasie van werk aan projekte te bestuur, die implementering daarvan op 'n spesifieke datum te beplan.

▍4. Outomatiese skaal van CI hardlopers

Danksy die outomatiese skaal van hardlopers wat verantwoordelik is vir die uitvoering van spesifieke take, kan u baie bespaar op die koste van die huur van bedienerkapasiteit. Dit is baie belangrik, veral wanneer dit kom by omgewings waar projekte parallel getoets word. Boonop is dit belangrik vir groot projekte wat uit verskeie bewaarplekke bestaan.

▍5. Gee opsporingsinstrumente uit

GitLab se kragtige probleemopsporingsvermoëns het daartoe gelei dat baie oopbronprojekte die platform gebruik het. GitLab CI/CD laat parallelle toetsing van verskillende kodevertakkings toe. Toetsresultate word gerieflik in die stelselkoppelvlak ontleed. Dit onderskei GitLab CI/CD van Jenkins.

▍6. Beperk toegang tot bewaarplekke

Die GitLab-platform ondersteun die beperking van toegang tot bewaarplekke. Byvoorbeeld, aan diegene wat aan 'n projek in 'n bewaarplek saamwerk, kan regte toegewys word wat geskik is vir hul rolle. Dit geld veral vir korporatiewe projekte.

▍7. Aktiewe gemeenskapsondersteuning

'n Aktiewe gemeenskap het rondom GitLab ontwikkel, wat bydra tot die ontwikkeling van hierdie platform en sy gereedskap, veral GitLab CI / CD. Diep integrasie van GitLab CI/CD en GitLab, onder andere, maak dit maklik om antwoorde te vind op vrae wat ontstaan ​​wanneer jy met GitLab CI/CD werk.

▍8. Ondersteuning vir verskeie weergawebeheerstelsels

GitLab CI/CD is 'n stelsel wat kan werk met meer as net kode wat in GitLab-bewaarplekke gehuisves word. Byvoorbeeld, die kode kan in 'n GitHub-bewaarplek gestoor word, en die CI / CD-pyplyn kan georganiseer word op grond van GitLab met GitLab CI / CD.

Vergelyking van Jenkins en GitLab CI/CD

Jenkins en GitLab CI/CD is baie goeie gereedskap, wat albei in staat is om die CI/CD-pyplyn glad te laat verloop. Maar as jy hulle vergelyk, blyk dit dat, hoewel hulle in baie opsigte soortgelyk is, hulle op sekere maniere van mekaar verskil.

Karakterisering
Jenkins
GitLab CI/CD

Oopbron of geslote bron
oop bron
oop bron

installasie
Vereis.
Nie nodig nie aangesien dit 'n ingeboude kenmerk van die GitLab-platform is.

Unieke kenmerke
Inprop ondersteuning.
Diep integrasie in weergawe beheer stelsel.

Ondersteun
Is afwesig.
Beskikbaar.

Installasie en konfigurasie
Moeilikhede veroorsaak nie
Moeilikhede veroorsaak nie

Selfontplooiing van die stelsel
Dit is die enigste manier om die stelsel te gebruik.
Ondersteun.

Skep CI/CD pyplyne
Ondersteun, met behulp van Jenkins Pipeline.
Ondersteun.

Toepassing prestasie monitering
Is afwesig.
Beskikbaar.

ekosisteem
Daar is meer as 1000 plugins.
Die stelsel word binne GitLab ontwikkel.

API
Ondersteun 'n gevorderde API-stelsel.
Bied 'n API vir dieper integrasie in projekte.

JavaScript ondersteuning
Beskikbaar.
Beskikbaar.

Integrasie met ander gereedskap
Integrasie met ander gereedskap en platforms word ondersteun (Slack, GitHub).
Baie instrumente vir integrasie met derdeparty-stelsels, veral - met GitHub en Kubernetes.

Kode kwaliteit beheer
Ondersteun - met behulp van die SonarQube-inprop en ander inproppe.
Ondersteun.

Verskille tussen Jenkins en GitLab CI/CD

Nadat ons Jenkins en GitLab CI/CD beskryf en vergelyk het, kom ons fokus op die verskille tussen hierdie DevOps-nutsgoed. Om hierdie verskille te ken, sal jou help om diegene te verstaan ​​wat een van hierdie instrumente bo die ander verkies.

  • GitLab CI/CD kan Git-bewaarplekke ten volle beheer. Ons praat oor die bestuur van bewaarplektakke en 'n paar ander funksies. Maar Jenkins, hoewel dit met bewaarplekke kan werk, gee nie dieselfde vlak van beheer daaroor as GitLab CI / CD nie.
  • Jenkins is 'n gratis oopbronprojek. Die een wat dit kies, ontplooi dit onafhanklik. En GitLab CI / CD is ingesluit in die GitLab-platform, dit is 'n sleuteloplossing.
  • GitLab CI/CD ondersteun gevorderde taakbestuurnutsmiddels wat op projekvlak werk. Hierdie kant van Jenkins is minder ontwikkel.

Jenkins en GitLab CI/CD: sterk- en swakpunte

Nou het jy 'n idee oor Jenkins en GitLab CI/CD. Nou, om jou nog beter vertroud te maak met hierdie instrumente, kom ons kyk na hul sterk- en swakpunte. Ons neem aan dat u reeds besluit het watter gereedskap u benodig. Hopelik sal hierdie afdeling jou toelaat om jouself te toets.

▍ Sterkpunte van Jenkins

  • 'n Groot aantal plugins.
  • Volle beheer oor die installasie van gereedskap.
  • Eenvoudige ontfouting van hardlopers.
  • Maklike nodus-opstelling.
  • Maklike kode-ontplooiing.
  • Baie goeie geloofsbriefbestuurstelsel.
  • Buigsaamheid en veelsydigheid.
  • Ondersteuning vir verskeie programmeertale.
  • Die stelsel is verstaanbaar op 'n intuïtiewe vlak.

▍Swakhede van Jenkins

  • Inproppe kan moeilik wees om te gebruik.
  • Wanneer Jenkins in klein projekte gebruik word, kan die tyd wat nodig is om dit self te konfigureer, onredelik groot wees.
  • Gebrek aan algemene analitiese inligting oor CI/CD-kettings.

▍ Sterkpunte van GitLab CI/CD

  • Goeie integrasie met Docker.
  • Eenvoudige skaal van hardlopers.
  • Parallelle uitvoering van take wat deel is van die stadiums van die CI/CD pyplyn.
  • Gebruik die gerigte asikliese grafiekmodel wanneer taakverwantskappe opgestel word.
  • Hoë vlak van skaalbaarheid as gevolg van die moontlikheid van parallelle uitvoering van hardlopers.
  • Maklik om take by te voeg.
  • Eenvoudige konflikoplossing.
  • Betroubare sekuriteitstelsel.

▍Swakhede van GitLab CI/CD

  • Vir elke taak moet jy artefakte beskryf en oplaai/aflaai.
  • Jy kan nie die resultate van die samevoeging van takke toets voordat hulle werklik saamgevoeg is nie.
  • Wanneer die stadiums van die CI / CD-pyplyn beskryf word, is dit nog nie moontlik om individuele stadiums daarin uit te sonder nie.

Resultate van

Beide Jenkins en GitLab CI/CD het sterk- en swakpunte. Die antwoord op die vraag wat om te kies hang af van die behoeftes en kenmerke van 'n spesifieke projek. Elkeen van die CI/CD-instrumente wat vandag hersien word, het sekere kenmerke, hoewel hierdie instrumente geskep is om dieselfde probleem op te los. Terselfdertyd is Jenkins 'n selfstandige instrument, en GitLab CI / CD is deel van 'n platform wat ontwerp is om aan kode saam te werk.

By die keuse van 'n CI / CD-stelsel, benewens sy vermoëns, is dit die moeite werd om die koste wat daarmee verband hou, in ag te neem, en waarmee presies DevOps-ingenieurs wat die projek ondersteun, gewoond is om mee te werk.

Watter CI/CD-instrumente gebruik jy?

Slag van Jenkins en GitLab CI/CD

Slag van Jenkins en GitLab CI/CD

Bron: will.com

Voeg 'n opmerking