Battle of Jenkins og GitLab CI/CD

I løpet av det siste tiåret har det blitt gjort betydelige fremskritt i utviklingen av verktøy for kontinuerlig integrasjon (Continuous Integration, CI) og kontinuerlig distribusjon (Continuous Delivery, CD). Utviklingen av teknologier for integrering av programvareutvikling og drift (Development Operations, DevOps) har ført til en rask økning i etterspørselen etter CI/CD-verktøy. Eksisterende løsninger blir stadig forbedret, prøver å følge med i tiden, deres nye versjoner slippes, i verden av kvalitetssikringsprogramvare (Quality Assurance, QA), dukker det stadig opp mange nye produkter. Med et så stort utvalg er det ikke en lett oppgave å velge riktig verktøy.

Battle of Jenkins og GitLab CI/CD

Blant alle de eksisterende CI/CD-verktøyene er det to prosjekter som absolutt er verdt å ta hensyn til noen som leter etter noe fra dette området. Vi snakker om Jenkins og GitLab CI/CD-verktøyet, som er en del av GitLab-plattformen. Jenkins har mer enn 16000 stjerner på GitHub. GitLab-depotet på gitlab.com scoret litt mer 2000 stjerner. Hvis vi sammenligner populariteten til depotene, viser det seg at Jenkins fikk 8 ganger flere stjerner enn plattformen, som inkluderer GitLab CI / CD. Men når du velger et CI / CD-verktøy, er dette langt fra den eneste indikatoren du bør være oppmerksom på. Det er mange andre, og dette forklarer hvorfor Jenkins og GitLab CI/CD i mange sammenligninger er veldig nær hverandre.

Ta for eksempel data fra G2-plattformen, som samler anmeldelser av en lang rekke produkter og vurderingene som brukerne gir dem. Her er gjennomsnittskarakteren Jenkins, basert på 288 anmeldelser, er 4,3 stjerner. Åh åh GitLab det er 270 anmeldelser, gjennomsnittlig vurdering for dette verktøyet er 4,4 stjerner. Vi skal ikke ta feil når vi sier at Jenkins og GitLab CI/CD konkurrerer med hverandre på like vilkår. Det er interessant å merke seg at Jenkins-prosjektet dukket opp i 2011, og siden den gang har det vært et favorittverktøy for testere. Men samtidig har GitLab CI / CD-prosjektet, lansert i 2014, tatt sin posisjon, veldig høyt, takket være de avanserte funksjonene som tilbys av denne plattformen.

Hvis vi snakker om populariteten til Jenkins sammenlignet med andre lignende plattformer, merker vi at vi, etter å ha publisert en artikkel som sammenligner Travis CI- og Jenkins-plattformene, arrangerte en undersøkelse. 85 brukere deltok i den. Respondentene ble bedt om å velge det CI/CD-verktøyet de liker best. 79 % valgte Jenkins, 5 % valgte Travis CI, og 16 % anga at de foretrekker andre verktøy.

Battle of Jenkins og GitLab CI/CD
Avstemningsresultater

Blant andre CI/CD-verktøy ble GitLab CI/CD nevnt oftest.

Hvis du er seriøs med DevOps, må du nøye velge de riktige verktøyene, ta hensyn til detaljene til prosjektet, budsjettet og andre krav. For å hjelpe deg med å ta det riktige valget, skal vi vurdere Jenkins og GitLab CI/CD. Dette vil forhåpentligvis hjelpe deg å ta det riktige valget.

Introduksjon til Jenkins

Battle of Jenkins og GitLab CI/CD
Jenkins er et velkjent, fleksibelt CI/CD-verktøy utviklet for å automatisere mange oppgaver knyttet til programvareprosjekter. Jenkins er skrevet utelukkende i Java og utgitt under MIT-lisensen. Den har et kraftig sett med funksjoner som tar sikte på å automatisere oppgavene knyttet til bygging, testing, distribusjon, integrering og utgivelse av programvare. Dette verktøyet kan brukes på forskjellige operativsystemer. Disse inkluderer macOS, Windows og mange Linux-distribusjoner som OpenSUSE, Ubuntu og Red Hat. Det er installasjonspakker for Jenkins designet for ulike operativsystemer, dette verktøyet kan installeres på Docker og på alle systemer som har et JRE (Java Runtime Environment).

Jenkins-utviklerne har laget et annet prosjekt, Jenkins X, som er designet for å fungere i et Kubernetes-miljø. Jenkins X integrerer Helm, Jenkins CI/CD-server, Kubernetes og andre verktøy for å bygge CI/CD-pipelines som følger DevOps beste praksis. For eksempel brukes GitOps her.

Man kan legge til skattkammeret av fordelene til Jenkins det faktum at skriptene er veldig godt strukturerte, forståelige og enkle å lese. Jenkins-teamet har laget rundt 1000 plugins som er rettet mot å organisere samspillet til Jenkins med et bredt utvalg av teknologier. Skript kan bruke autentiseringssystemer, som for eksempel lar deg koble til ulike lukkede systemer.

Under driften av Jenkins-rørledningen kan du observere hva som skjer i hvert trinn, om visse stadier av arbeidet er fullført eller ikke. Du kan imidlertid se alt dette uten å bruke et visst grafisk grensesnitt, men ved å bruke mulighetene til terminalen.

Egenskaper til Jenkins

Blant de velkjente funksjonene til Jenkins er enkelt oppsett, høy grad av automatisering av ulike operasjoner og utmerket dokumentasjon. Hvis vi snakker om å løse DevOps-oppgaver, regnes Jenkins her som et veldig pålitelig verktøy, som som regel ikke gir mening å overvåke hele prosessen med prosjektbehandling nøye. Dette er ikke tilfelle med andre CI/CD-verktøy. La oss snakke om noen av de viktigste egenskapene til Jenkins.

▍1. Gratis, åpen kildekode, støtte for flere plattformer

Jenkins kan kjøres på macOS, Windows og Linux-plattformer. Den kan også fungere i et Docker-miljø, som lar deg organisere enhetlig og rask utførelse av automatiserte oppgaver. Dette verktøyet kan også kjøres som en servlet i Java-aktiverte beholdere som Apache Tomcat og GlassFish. Installasjon av Jenkins kvalitativt dokumentert.

▍2. Utviklet plugin-økosystem

Jenkins-plugin-økosystemet ser ut til å være mye mer modent enn plugin-økosystemene til andre CI/CD-verktøy. Det er for tiden over 1500 plugins for Jenkins. Disse pluginene er rettet mot å løse et bredt spekter av oppgaver, med deres hjelp kan du automatisere en rekke prosjekter. Overfloden av gratis plugins å velge mellom betyr at hvis du bruker Jenkins, trenger du ikke å kjøpe dyre betalte plugins. Det er en mulighet integrering Jenkins med mange DevOps-verktøy.

▍3. Enkel installasjon og oppsett

Jenkins er ganske enkel å installere og konfigurere. Samtidig er prosessen med å oppdatere systemet også veldig praktisk. Her er det igjen verdt å nevne kvaliteten på dokumentasjonen, siden du i den kan finne svar på en rekke spørsmål knyttet til installasjon og konfigurering av Jenkins.

▍4. Vennlig fellesskap

Som allerede nevnt, er Jenkins et åpen kildekode-prosjekt, hvis økosystem inkluderer et stort antall plugins. Et stort fellesskap av brukere og utviklere har utviklet seg rundt Jenkins for å hjelpe til med å utvikle prosjektet. Samfunnet er en av faktorene som driver utviklingen av Jenkins.

▍5. Tilgjengelighet av REST API

Mens du jobber med Jenkins, kan du bruke REST API, som utvider funksjonene til systemet. API for ekstern tilgang til systemet presenteres i tre versjoner: XML, JSON med JSONP-støtte, Python. Her Dokumentasjonsside som dekker detaljer om arbeid med Jenkins REST API.

▍6. Støtte for parallell utførelse av oppgaver

Jenkins støtter parallellisering av DevOps-oppgaver. Den kan enkelt integreres med relevante verktøy og motta varsler om resultatene av oppgaver. Kodetesting kan akselereres ved å organisere en parallell oppbygging av prosjektet ved å bruke forskjellige virtuelle maskiner.

▍7. Støtte til arbeid i distribuerte miljøer

Jenkins lar deg organisere distribuerte bygg ved hjelp av flere datamaskiner. Denne funksjonen er anvendelig i store prosjekter og bruker et arbeidsskjema, ifølge hvilket det er en master Jenkins-server og flere slavemaskiner. Slavemaskiner kan også brukes i situasjoner der det er nødvendig å organisere testing av et prosjekt i ulike miljøer. Disse funksjonene skiller Jenkins fra andre lignende prosjekter.

Introduksjon til GitLab

Battle of Jenkins og GitLab CI/CD
GitLab CI / CD kan kalles et av de nyeste og mest elskede DevOps-verktøyene. Dette gratis open source-verktøyet er innebygd i GitLab versjonskontrollsystem. GitLab-plattformen har en fellesskapsversjon, den støtter repository management, problemsporingsverktøy, kodegjennomgangsorganisasjon, dokumentasjonsorienterte mekanismer. Bedrifter kan installere GitLab lokalt, koble det til Active Directory og LDAP-servere for sikker brukerautorisasjon og autentisering.

Her En videoopplæring som hjelper deg å lære hvordan du lager CI/CD-pipelines ved å bruke GitLab CI/CD-funksjoner.

GitLab CI/CD ble opprinnelig utgitt som et frittstående prosjekt, men i 2015 ble dette settet med verktøy integrert i GitLab 8.0. En enkelt GitLab CI/CD-server kan støtte over 25000 XNUMX brukere. Basert på slike servere kan du lage systemer som er svært tilgjengelige.

GitLab CI/CD og hoved GitLab-prosjektet er skrevet i Ruby and Go. De er utgitt under MIT-lisensen. GitLab CI/CD, i tillegg til de vanlige funksjonene til CI/CD-verktøy, støtter også tilleggsfunksjoner relatert, for eksempel til arbeidsplanlegging.

Det er veldig enkelt å integrere GitLab CI/CD i et prosjekt. Ved bruk av GitLab CI/CD er prosjektkodebehandlingsprosessen delt inn i stadier, som hver kan bestå av flere oppgaver utført i en bestemt rekkefølge. Oppgaver kan finjusteres.

Oppgaver kan kjøres parallelt. Etter å ha satt opp sekvensen av stadier og oppgaver, er CI/CD-rørledningen klar til bruk. Du kan overvåke fremdriften ved å overvåke statusen til oppgaver. Som et resultat er det veldig praktisk å bruke GitLab CI / CD, kanskje mer praktisk enn andre lignende verktøy.

Funksjoner av GitLab CI/CD og GitLab

GitLab CI/CD er et av de mest populære DevOps-verktøyene. Prosjektet utmerker seg med dokumentasjon av høy kvalitet, funksjonene er enkle og praktiske å bruke. Hvis du ennå ikke er kjent med GitLab CI/CD, vil følgende liste over funksjonene til dette verktøyet gi deg en generell ide om hva du kan forvente av det. Det skal bemerkes at mange av disse funksjonene er relatert til selve GitLab-plattformen, der GitLab CI/CD er integrert.

▍1. Popularitet

GitLab CI/CD er et relativt nytt verktøy som har funnet utbredt bruk. GitLab CI/CD har sakte blitt et enormt populært CI/CD-verktøy som brukes til automatisert testing og programvaredistribusjon. Den er enkel å sette opp. Det er også et gratis CI/CD-verktøy innebygd i GitLab-plattformen.

▍2. Støtte for GitLab Pages og Jekyll

Jekyll er en statisk nettstedsgenerator som kan brukes i GitLab Pages-systemet for å lage nettsteder basert på GitLab-repositorier. Systemet tar kildematerialene og genererer et ferdig statisk nettsted basert på dem. Du kan kontrollere utseendet og funksjonene til slike nettsteder ved å redigere filen _config.yml, brukt av Jekyll.

▍3. Prosjektplanleggingsevner

Takket være muligheten til å planlegge stadier av prosjekter, øker bekvemmeligheten av å spore problemer og deres grupper. Dette lar deg administrere organiseringen av arbeidet med prosjekter, planlegge implementeringen på en bestemt dato.

▍4. Automatisk skalering av CI-løpere

Takket være den automatiske skaleringen av løpere som er ansvarlige for å utføre spesifikke oppgaver, kan du spare mye på kostnadene ved å leie serverkapasitet. Dette er svært viktig, spesielt når det gjelder miljøer hvor prosjekter testes parallelt. I tillegg er dette viktig for store prosjekter som består av flere depoter.

▍5. Utsted sporingsverktøy

GitLabs kraftige problemsporingsfunksjoner har ført til at mange åpen kildekode-prosjekter har brukt plattformen. GitLab CI/CD tillater parallell testing av forskjellige kodegrener. Testresultater analyseres enkelt i systemgrensesnittet. Dette skiller GitLab CI/CD fra Jenkins.

▍6. Begrensning av tilgang til depoter

GitLab-plattformen støtter begrense tilgang til depoter. For eksempel kan de som samarbeider om et prosjekt i et depot få tildelt tillatelser som passer til rollene deres. Dette gjelder spesielt for bedriftsprosjekter.

▍7. Aktiv samfunnsstøtte

Et aktivt fellesskap har utviklet seg rundt GitLab, som bidrar til utviklingen av denne plattformen og dens verktøy, spesielt GitLab CI/CD. Dyp integrasjon av blant annet GitLab CI/CD og GitLab gjør det enkelt å finne svar på spørsmål som dukker opp når man jobber med GitLab CI/CD.

▍8. Støtte for ulike versjonskontrollsystemer

GitLab CI/CD er et system som kan fungere med mer enn bare kode som er vert i GitLab-repositories. For eksempel kan koden lagres i et GitHub-depot, og CI/CD-pipelinen kan organiseres på grunnlag av GitLab ved å bruke GitLab CI/CD.

Sammenligning av Jenkins og GitLab CI/CD

Jenkins og GitLab CI/CD er veldig gode verktøy, som begge er i stand til å få CI/CD-pipelinen til å gå jevnt. Men hvis vi sammenligner dem, viser det seg at selv om de er like på mange måter, skiller de seg fra hverandre på noen måter.

Karakterisering
Jenkins
GitLab CI / CD

Åpen kilde eller lukket kilde
åpen kilde
åpen kilde

Installasjon
Obligatorisk.
Ikke nødvendig da dette er en innebygd funksjon i GitLab-plattformen.

Unike egenskaper
Plugin-støtte.
Dyp integrasjon i versjonskontrollsystem.

Støtte
Fraværende.
Tilgjengelig.

Installasjon og konfigurasjon
Vanskeligheter forårsaker ikke
Vanskeligheter forårsaker ikke

Selvdistribusjon av systemet
Dette er den eneste måten å bruke systemet på.
Støttes.

Opprette CI/CD-rørledninger
Støttes ved hjelp av Jenkins Pipeline.
Støttes.

Overvåking av applikasjonsytelse
Fraværende.
Tilgjengelig.

økosystem
Det er over 1000 plugins.
Systemet utvikles innenfor GitLab.

API
Støtter et avansert API-system.
Tilbyr en API for dypere integrering i prosjekter.

JavaScript-støtte
Tilgjengelig.
Tilgjengelig.

Integrasjon med andre verktøy
Integrasjon med andre verktøy og plattformer støttes (Slack, GitHub).
Mange verktøy for integrasjon med tredjepartssystemer, spesielt - med GitHub og Kubernetes.

Kode kvalitetskontroll
Støttes - ved å bruke SonarQube-plugin og andre plugins.
Støttes.

Forskjeller mellom Jenkins og GitLab CI/CD

Etter å ha beskrevet og sammenlignet Jenkins og GitLab CI/CD, la oss fokusere på forskjellene mellom disse DevOps-verktøyene. Å kjenne disse forskjellene vil hjelpe deg å forstå de som foretrekker ett av disse verktøyene fremfor det andre.

  • GitLab CI/CD kan fullt ut kontrollere Git-lagre. Vi snakker om å administrere depotgrener og noen andre funksjoner. Men Jenkins, selv om det kan fungere med repositories, gir ikke samme nivå av kontroll over dem som GitLab CI / CD.
  • Jenkins er et gratis åpen kildekode-prosjekt. Den som velger det, distribuerer det uavhengig. Og GitLab CI / CD er inkludert i GitLab-plattformen, dette er en nøkkelferdig løsning.
  • GitLab CI/CD støtter avanserte oppgavehåndteringsverktøy som fungerer på prosjektnivå. Denne siden av Jenkins er mindre utviklet.

Jenkins og GitLab CI/CD: styrker og svakheter

Nå har du en ide om Jenkins og GitLab CI/CD. Nå, for å gjøre deg enda bedre kjent med disse verktøyene, la oss ta en titt på deres styrker og svakheter. Vi antar at du allerede har bestemt deg for hvilket verktøy du trenger. Forhåpentligvis vil denne delen tillate deg å teste deg selv.

▍ Styrken til Jenkins

  • Et stort antall plugins.
  • Full kontroll over installasjon av verktøy.
  • Enkel feilsøking av løpere.
  • Enkelt nodeoppsett.
  • Enkel kodedistribusjon.
  • Meget godt legitimasjonsstyringssystem.
  • Fleksibilitet og allsidighet.
  • Støtte for ulike programmeringsspråk.
  • Systemet er forståelig på et intuitivt nivå.

▍Svakheter ved Jenkins

  • Plugins kan være vanskelig å bruke.
  • Når du bruker Jenkins i små prosjekter, kan tiden som kreves for å konfigurere den selv være urimelig stor.
  • Mangel på generell analytisk informasjon om CI/CD-kjeder.

▍Styrker ved GitLab CI/CD

  • God integrasjon med Docker.
  • Enkel skalering av løpere.
  • Parallell utførelse av oppgaver som er en del av stadiene i CI/CD-pipeline.
  • Bruke den rettet asykliske grafmodellen når du setter opp oppgaverelasjoner.
  • Høy grad av skalerbarhet på grunn av muligheten for parallell utførelse av løpere.
  • Enkelt å legge til oppgaver.
  • Enkel konfliktløsning.
  • Pålitelig sikkerhetssystem.

▍Svakheter ved GitLab CI/CD

  • For hver oppgave må du beskrive og laste opp/laste ned artefakter.
  • Du kan ikke teste resultatene av sammenslåing av grener før de faktisk er slått sammen.
  • Når du beskriver stadiene i CI / CD-rørledningen, er det ennå ikke mulig å skille ut individuelle stadier i dem.

Resultater av

Både Jenkins og GitLab CI/CD har styrker og svakheter. Svaret på spørsmålet om hva du skal velge avhenger av behovene og egenskapene til et bestemt prosjekt. Hvert av CI/CD-verktøyene som er gjennomgått i dag har visse funksjoner, selv om disse verktøyene ble laget for å løse det samme problemet. Samtidig er Jenkins et frittstående verktøy, og GitLab CI/CD er en del av en plattform designet for å samarbeide om kode.

Når du velger et CI / CD-system, i tillegg til dets evner, er det verdt å ta hensyn til kostnadene som kan være forbundet med det, og nøyaktig hva DevOps-ingeniører som støtter prosjektet er vant til å jobbe med.

Hvilke CI/CD-verktøy bruker du?

Battle of Jenkins og GitLab CI/CD

Battle of Jenkins og GitLab CI/CD

Kilde: www.habr.com

Legg til en kommentar