GitLab CI vs. Jenkins: Forskjeller og likheter [2023]

Programvareutvikling er en reise. Det starter med planlegging, analyse, design, utvikling, testing, distribusjon og vedlikehold. Programvareutviklere trenger ulike verktøy for å bruke i denne reisen.

GitLab CI og Jenkins er blant de største navnene i nisjen for kontinuerlig integrasjon og levering (CI/CD). CI/CD er et sett med prosesser som automatiserer programvareutvikling.

Denne GitLab vs. Jenkins-artikkelen vil definere hvert verktøy, forklare hvordan hvert verktøy fungerer og sammenligne nøkkelfunksjonene deres.

Hva er GitLab CI?

GitLab Continuous Integration and Delivery er et DevOps-verktøy som automatiserer trinnene som kreves for å bygge, teste og distribuere koden din til produksjonsmiljøet ditt.

GitLab CI har to deler; Kontinuerlig integrasjon (CI) og kontinuerlig levering/distribusjon (CD).

Kontinuerlig integrasjon har i oppgave å automatisere alle bygg. Denne funksjonen gir også tilbakemelding gjennom kodegjennomgang og automatiserer sikkerhets- og kvalitetstester for koden din. Til slutt oppretter CI en utgivelsespakke for å distribuere til produksjonsmiljøet ditt.

Continuous Deployment-biten til GitLab CI sørger automatisk for infrastruktur og administrerer billettering, infrastrukturendringer og utgivelsesversjon. CD tilbyr et miljø for progressiv kodedistribusjon og tillater verifisering og overvåking av alle endringene som er gjort. Denne funksjonen lar brukere også rulle tilbake endringer når det er nødvendig.

Når de to funksjonene kombineres, kan du automatisere hele livssyklusen for programvareutvikling (SDLC) med minimal manuell intervensjon.

I et nøtteskall er GitLab CI vant til;

  • Lagre og administrer kode
  • Automatiser CI/CD-rørledningen
  • Spor problemer
  • Sikker kode
  • Samarbeid

Fordeler med å bruke GitLab CI

  • Økt hastighet: Du trenger ikke lenger å gå gjennom manuelle prosesser som å bygge, teste og distribuere kode når du bruker GitLab CI.
  • Forbedret kodekvalitet: Med GitLab CI kan du fange opp feil og feil i koden din før de går til produksjon.
  • Sikkert: GitLab CI har ulike sikkerhetsfunksjoner som sårbarhetsskanning, hemmelig administrasjon og kodeskanning for å redusere hacking-trusler.
  • Fleksibel: Du kan tilpasse GitLab CI for å møte behovene til utviklingsteamet ditt. Du kan bruke dette verktøyet med store språk og rammeverk.
  • Automatisert testing: Du trenger ikke å kjøre tester manuelt, da du kan skrive skript for å skrive og utføre tester automatisk.

Hva er Jenkins?

Jenkins er en utvidbar automatiseringsserver. Dette åpen kildekodeverktøyet hjelper brukere med å administrere og bygge rørledninger for kontinuerlig integrasjon og kontinuerlig levering (CI/CD). Jenkins er et favorittverktøy for DevOps og programvareingeniører, da det bidrar til å forbedre programvarekvaliteten, påliteligheten og leveringshastigheten.

  Jeg brukte en Cortana Smart Speaker hele helgen. Her er hvorfor det mislyktes

Jenkins kjører en serie «jobber» eller trinn i en pipeline. En jobb består av flere trinn som utføres i en sekvens. Et trinn i Jenkins kan være en bygging, test, distribusjon eller en hvilken som helst annen oppgave som kan automatiseres i livssyklusen for programvareutvikling.

Bruken av Jenkins kan oppsummeres som følger;

  • Kontinuerlig integrering
  • Kontinuerlig levering
  • Automatisert testing
  • Overvåking og rapportering
  • Kodeskanning
  • Jobbplanlegging

Fordeler med å bruke Jenkins

  • Skalerbar: Du kan bruke Jenkins med både små og store applikasjoner.
  • Enkel konfigurasjon: Jenkins har en enkel konfigurasjonsprosess støttet av nok ressurser.
  • Stort fellesskap: Jenkins har eksistert i nesten to tiår og har tiltrukket seg mange følgere.
  • En rekke plugins: Du kan forbedre funksjonaliteten til Jenkins ved å bruke det store utvalget av plugins.
  • Tillater parallell jobbutførelse: Med Jenkins kan du utføre forskjellige oppgaver samtidig, noe som sparer tid.

Likheter med GitLab CI og Jenkins

  • Begge støtter kontinuerlig integrasjon og kontinuerlig leveranse.
  • Begge er åpen kildekode-verktøy.
  • Begge har et stort fellesskap og følger.
  • Begge støtter en rekke språk og rammer
  • Begge automatiserer ulike oppgaver i programvareutviklingens livssyklus
  • Begge har et stort økosystem av plugins og utvidelser

GitLab CI vs. Jenkins: En sammenligning av funksjoner

FeatureGitLab CIJenkinsOpen-sourceJaJaSpråkstøtte Mange språk Mange språkPriser De fleste funksjonene er tilgjengelige i gratisplanen. Verktøyet har også betalte planer med flere funksjoner.En nyere plattform; ble opprettet i 2014. Modenhet En nyere plattform; opprettet i 2014.Jenkins ble lansert som Hudson, men gaffel og omdøpt til Jenkins i 2011. Brukervennlighet Enkel å brukeDet kan være komplisert for nybegynnere.HostingIntern og eksternInterne og eksterneForutsetningerNode.JS, Git, Ruby, GoJava Runtime Environment

GitLab CI vs. Jenkins: Detaljert sammenligning

Selv om GitLab og Jenkins deler likheter, har de to distinkte forskjeller som påvirker hvordan de håndterer CI/CD-prosessen. Dette er noen av hovedområdene;

Arkitektur

Jenkins bruker en master-worker-arkitektur for å administrere bygg.

  • Jenkins master planlegger jobbbygginger og distribuerer dem til arbeidere for faktisk utførelse. Denne funksjonen overvåker også tilstanden til arbeiderne, samler og samler alle byggeresultatene i nettdashbordet.
  • Jenkins worker er en kjørbar Java som kjører på en ekstern maskin. Denne funksjonen, også kjent som byggeagent, lytter etter alle forespørsler fra masteren og utfører dem. Du kan ha opptil 100+ noder og legge til eller fjerne arbeidere etter behov.

GitLab CI er en del av GitLab, et nettbasert grensesnitt for administrasjon av repositories, sammenslåingsforespørsler og mye mer. GitLab CI har ulike komponenter;

  • GitLab CI/CD-verktøy lar deg administrere bygg.
  • GitLab Runners utfører alle CI-jobbene. Denne lette prosessen kan kjøres i skyen eller på maskinen din.
  • CI/CD-rørledningskonfigurasjoner er definert i .gitlab-ci.yml. Denne filen definerer alle jobbene, stadiene og trinnene i rørledningen.
  Beskytt ditt online personvern med Swiss ProtonVPN [Hands-On Testing and Review]

Plugins

Jenkins har over 1800 fellesskapsbidrag med plugins. Disse pluginene dekker forskjellige områder, som å bygge, distribuere og automatisere prosjekter. Brukere kan tilpasse sine CI/CD-pipelines og utvide Jenkins» funksjonalitet.

Utviklere kan lage tilpassede plugins ved hjelp av Jenkins omfattende dokumentasjon. De kan også bygge plugins og legge dem til Jenkins» katalog. Jenkins har et stort og aktivt fellesskap som hjelper til med å bygge plugins.

GitLab CI lar deg koble til/integrere med eksterne tjenester for forbedret funksjonalitet. Plugins-/utvidelsesbiblioteket er mindre sammenlignet med Jenkins, men det vokser. Siden GitLab CI er en del av GitLab, kommer den med mange innebygde funksjoner.

Brukere kan tilpasse/konfigurere arbeidsflytene sine ved å bruke .gitlab-ci.yml-filen. Du kan spesifisere alle jobbene, stadiene og trinnene.

Rørledninger

Jenkins lar deg bruke både deklarativ og skriptet pipeline-syntaks. Du kan bruke hvilken som helst av de to tilnærmingene med web-UI eller en Jenkinsfile. Sistnevnte er den mest foretrukne. Du kan lagre rørledningene som Jenkins-filer i depotet som lagrer kildekoden. Plattformen kommer med en innebygd nettbasert GUI hvor du kan overvåke og visualisere henrettelsene.

GitLab CI har en .gitlab-ci.yml som definerer alle rørledningene. Denne YML-baserte konfigurasjonsfilen er lagret i prosjektets rotkatalog. Gitlab-ci.yml er kjent for sin enkle syntaks med en rekke kommandoer og forhåndsdefinerte nøkkelord som dekker de vanligste CI/CD-oppgavene. GitLab CI integreres med andre GitLab-funksjoner, og tillater kildekodeadministrasjon, problemsporing, kodegjennomganger, sammenslåingsforespørsler og mye mer.

Hvordan installere Jenkins

Før du installerer Jenkins på PC-en din, trenger du et Java Runtime Environment (JRE). Last ned Java fra det offisielle nettstedet, avhengig av operativsystemet ditt. Jeg skal bruke Ubuntu for å demonstrere installasjonsprosessen.

Hvis du bruker et annet operativsystem, sjekk ut artikkelen vår om å installere Jenkins og følg trinnene som er oppført.

For Ubuntu, følg disse trinnene;

Trinn 1: Sjekk at JRE er installert. Kjør denne kommandoen:

java -version

Hvis det er installert, vil du ha noe slikt:

Jeg har installert versjon «17.0.6», men du kan ha en høyere versjon.

Trinn 2: Importer GPG-nøkkelen til systemet ditt ved å bruke denne kommandoen;

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee 

  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

Trinn 3: Legg til Jenkins» programvarelager ved å bruke denne kommandoen;

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] 

  https://pkg.jenkins.io/debian-stable binary/ | sudo tee 

  /etc/apt/sources.list.d/jenkins.list > /dev/null

Trinn 4: Oppdater systemet med denne kommandoen:

sudo apt update

Trinn 5: Installer Jenkins ved å bruke denne kommandoen:

sudo apt install jenkins -y

Trinn 6: Sjekk om Jenkins er installert med denne kommandoen:

sudo systemctl status jenkins

Hvis den er installert, vil du se noe som ligner på dette:

Trykk ctrl+z på tastaturet for å avslutte og gå til neste trinn.

  Hva er forskjellen mellom CC og BCC i e-post

Trinn 7: Endre brannmuren og Jenkins på systemet ditt. Bruk denne kommandoen:

sudo ufw allow 8080

Trinn 8: Sjekk statusen

sudo ufw status

Trinn 9: Hvis statusen er «Inaktiv» i forrige trinn, aktiver den ved å bruke denne kommandoen:

sudo ufw enable

Trinn 10: Åpne Jenkins i nettleseren ved å skrive dette i nettleseren din;

http://localhost:8080

Trinn 11: Skaff «Administratorpassord» ved å kjøre denne kommandoen:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Trinn 12: Lås opp Jenkins

Kopier passordet som vises på terminalen, lim inn «Administratorpassord»-dialogboksen du åpner i trinn ti, og trykk «Fortsett».

Det nye vinduet vil be deg om å installere plugins. Siden du ikke trenger mange plugins for øyeblikket, kan du velge standard og gå til neste trinn

Trinn 13: Opprett kontoen din, «lagre og fortsett».

Trinn 14: Sett opp øyeblikkelig konfigurasjon og begynn å bruke Jenkins

Hvordan installere GitLab CI

GitLab CI er en del av GitLab. For å få GitLab CI må du først installere GitLab Runner, agenten som kjører alle jobbene før du sender dem til GitLab.

Jeg skal bruke Ubuntu for å demonstrere prosessen. Hvis du har et annet operativsystem, sjekk den offisielle dokumentasjonen. For Ubuntu, følg disse trinnene;

Trinn 1: Oppdater og konfigurer systemet ditt;

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

Du kan konfigurere en e-postløsning for å sende oppdateringer eller hoppe over dette trinnet.

Trinn 2: Legg til GitLab-pakkelager

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

Trinn 3: Konfigurer GitLab-kontoen din.

Det finnes forskjellige alternativer for å være vert for GitLab. Følg instruksjonene avhengig av ditt valg.

Trinn 4: Bla gjennom vertsnavnet og logg på. Klikk denne kommandoen på terminalen for å få passordet ditt;

/etc/gitlab/initial_root_password 

Valgfritt: Angi kommunikasjonspreferanser for å motta produktoppdateringer og nyheter fra GitLab.

Begrensninger til Jenkins

  • Jenkins kan være komplisert å sette opp for store prosjekter.
  • Hvis den ikke er godt konfigurert, kan Jenkins være sårbar for sikkerhetsangrep.
  • Det kan være vanskelig å skalere store prosjekter mens du bruker Jenkins.
  • Jenkins kan bruke mye ressurser når du kjører mange samtidige bygg.

Begrensninger for Gitlab CI

  • GitLab CI kan være kompleks for store prosjekter.
  • Avhengig av GitLab.
  • Skalerbarhet er et problem for store prosjekter.
  • Plugin-økosystemet er ikke stort sammenlignet med Jenkins.

Forfatterens mening

Både GitLab CI og Jenkins er fantastiske verktøy i livssyklusen for programvareutvikling. Jeg vil gå for Jenkins hvis jeg vil ha en mer moden plattform og full kontroll over tilpasning. På den annen side vil jeg gå for GitLab CI for brukergrensesnittet og trenger å dra nytte av GitLab-integrasjonen.

Vi tror nå at du kan se forskjellene mellom GitLab CI og Jenkins. Selv om de to verktøyene er designet for å utføre lignende funksjoner, er de forskjellige i funksjoner og hvordan de oppnår funksjonene sine. Valget mellom de to vil avhenge av arten av prosjektet du har, dine ferdigheter, smak og preferanser.

Du kan nå se på disse Jenkins-vertsplattformene.