Kampen mellom Jenkins og GitLab CI/CD

I løpet av det siste tiåret har det blitt gjort betydelige fremskritt innen utvikling av verktøy for kontinuerlig integrasjon (Continuous Integration, CI) og kontinuerlig distribusjon (Continuous Delivery, CD). Utviklingen av teknologi for integrasjon 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 forbedres kontinuerlig, i en tid der det stadig lanseres nye versjoner, og i verden av programvarekvalitet (Quality Assurance, QA) dukker det opp mange nye produkter. Med slik et mangfold av valg er det en utfordring å finne riktig verktøy.

Kampen mellom Jenkins og GitLab CI/CD

Blant alle eksisterende CI/CD-verktøy er det to prosjekter som absolutt er verdt å merke seg for de som leter etter noe innen dette feltet. Dette handler om Jenkins og om verktøyet GitLab CI/CD, som er en del av GitLab-plattformen. Jenkins har mer enn 16000 stjerner på GitHub. GitLab-repoet på gitlab.com har fått litt over 2000 stjerner. Når vi sammenligner populariteten til repoene, viser det seg at Jenkins har fått 8 ganger så mange stjerner som plattformen som inneholder GitLab CI/CD. Men når man velger et CI/CD-verktøy, er dette langt fra den eneste indikatoren man bør fokusere på. Det finnes mange andre faktorer, og dette forklarer hvorfor Jenkins og GitLab CI/CD ofte ligger svært nær hverandre i mange sammenligninger.

La oss ta for oss data fra plattformen G2, som samler anmeldelser av mange forskjellige produkter og vurderinger gitt av brukerne. Her er den gjennomsnittlige vurderingen, basert på 288 anmeldelser, 4,3 stjerner. Og for . Jeg vil svare slik. For de fleste oppgaverfinnes det 270 anmeldelser, og den gjennomsnittlige vurderingen for dette verktøyet er 4,4 stjerner. Vi tar ikke feil når vi sier at Jenkins og GitLab CI/CD konkurrerer med hverandre på like vilkår. Det er interessant å merke seg at prosjektet Jenkins ble lansert i 2011, og siden den gang har det vært et favorittverktøy for testere. Samtidig har prosjektet GitLab CI/CD, som ble lansert i 2014, tatt sine høye posisjoner takket være de avanserte funksjonene som tilbys av denne plattformen. GitLab тут имеется 270 отзывов, средний рейтинг этого инструмента составляет 4,4 звезды. Мы не ошибёмся, заявив, что Jenkins и GitLab CI/CD конкурируют друг с другом на равных условиях. Интересно отметить то, что проект Jenkins появился в 2011 году и с тех времён он является излюбленным инструментом тестировщиков. Но при этом проект GitLab CI/CD, запущенный в 2014 году, занял свои позиции, очень высокие, благодаря предлагаемым этой платформой передовым возможностям.

Når vi snakker om populariteten til Jenkins sammenlignet med andre lignende plattformer, bør vi nevne at vi, etter å ha publisert en artikkel der vi sammenlignet Travis CI og Jenkins, gjennomførte en undersøkelse. 85 brukere deltok. Deltakerne ble bedt om å velge CI/CD-verktøyet de liker best. 79% valgte Jenkins, 5% valgte Travis CI, mens 16% oppga at de foretrekker andre verktøy.

Kampen mellom Jenkins og GitLab CI/CD
Resultater fra undersøkelsen

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

Hvis du seriøst driver med DevOps, må du nøye velge riktige verktøy, med tanke på prosjektets spesifikasjoner, budsjett og andre krav. For å hjelpe deg med å ta det rette valget skal vi gjennomføre en analyse av Jenkins og GitLab CI/CD. Dette, håper vi, vil hjelpe deg til å ta den riktige avgjørelsen.

Introduksjon til Jenkins

Kampen mellom Jenkins og GitLab CI/CD
. Jeg vil svare slik. For de fleste oppgaver er et velkjent, fleksibelt CI/CD-verktøy, designet for å automatisere mange oppgaver relatert til programvareprosjekter. Jenkins er helt skrevet i Java og er utgitt under MIT-lisensen. Det har et kraftig sett av funksjoner rettet mot automatisk utførelse av oppgaver som bygging, testing, distribusjon, integrasjon og utgivelse av programvare. Dette verktøyet kan brukes på ulike operativsystemer. Blant dem er macOS, Windows og mange distribusjoner av Linux, som OpenSUSE, Ubuntu og Red Hat. Det finnes installasjonspakker for Jenkins som er designet for ulike operativsystemer, og dette verktøyet kan installeres i Docker og på alle systemer med JRE (Java Runtime Environment).

Utviklerne av Jenkins har også laget et annet prosjekt, Jenkins X, som er målrettet mot miljøet Kubernetes. Jenkins X integrerer Helm, Jenkins CI/CD-serveren, Kubernetes, og andre verktøy for å lage CI/CD-pipelines som samsvarer med beste praksis innen DevOps. For eksempel benyttes GitOps her.

I tillegg til fordelene med Jenkins kan det nevnes at skriptene er veldig godt strukturerte, forståelige, og lette å lese. Jenkins-teamet har laget rundt 1000 plugins som hjelper med å organisere samhandlingen mellom Jenkins og en rekke forskjellige teknologier. I skriptene kan autentiseringssystemer brukes, noe som for eksempel gjør det mulig å koble til ulike lukkede systemer.

I prosessen med Jenkins-konveyor kan man observere hva som skjer i hvert trinn, samt om forskjellige faser av arbeidet er fullført vellykket eller ikke. Man kan overvåke alt dette uten å bruke et grafisk grensesnitt, men ved å benytte terminalens muligheter.

Kjennetegn ved Jenkins

Blant de kjente egenskapene ved Jenkins kan man nevne enkel konfigurasjon, høy grad av automatisering av ulike operasjoner, og utmerket dokumentasjon. Når det gjelder DevOps-løsninger, anses Jenkins som et veldig pålitelig verktøy, og det er vanligvis ikke nødvendig å overvåke hele prosjektprosessen nøye. For andre CI/CD-verktøy er ikke dette tilfelle. La oss snakke om noen av de viktigste funksjonene til Jenkins.

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

Jenkins kan kjøre på plattformene macOS, Windows og Linux. Det kan også fungere i Docker-miljøer, noe som muliggjør ensartet og rask utførelse av automatiserte oppgaver. I tillegg kan dette verktøyet kjøres som en servlet i containere som støtter Java, som Apache Tomcat og GlassFish. Installeringen av Jenkins er godt dokumentert. dokumentert.

▍2. Utviklet plugin-økosystem

Plugin-økosystemet til Jenkins fremstår som mye mer utviklet enn økosystemene av tilkoblede moduler fra andre CI/CD-verktøy. I dag finnes det over 1500 plugins for Jenkins. Disse pluginene er rettet mot et bredt spekter av oppgaver, og de kan brukes til å automatisere svært forskjellige prosjekter. Det rike utvalget av gratis tilkoblede moduler betyr at de som bruker Jenkins ikke har et stort behov for å kjøpe dyre betalte plugins. Det finnes muligheter integrasjonen Jenkins med mange DevOps-verktøy.

▍3. Enkel installasjon og oppsett

Jenkins er ganske enkelt å installere og sette opp. Prosessen med å oppdatere systemet er også veldig brukervennlig. Her må man igjen nevne kvaliteten på dokumentasjonen, da den gir svar på mange forskjellige spørsmål knyttet til installasjon og oppsett av Jenkins.

▍4. Vennlig fellesskap

Som allerede nevnt, er Jenkins et åpen kildekode-prosjekt hvis økosystem inkluderer et stort antall plugins. Rundt Jenkins har det utviklet seg et stort fellesskap av brukere og utviklere som bidrar til prosjektets utvikling. Fellesskapet er en av faktorene som bidrar til videre utvikling av Jenkins.

▍5. Tilgjengelighet av REST API

I løpet av arbeidet med Jenkins kan man bruke REST API, noe som utvider systemets muligheter. API for ekstern tilgang til systemet er tilgjengelig i tre varianter: XML, JSON med støtte for JSONP, Python. Her er dokumentasjonsside som avslører detaljene om arbeidet med REST API Jenkins.

▍6. Støtte for parallell oppgaveløsing

Jenkins støtter parallellisering av DevOps-oppgaver. Det kan lett integreres med relevante verktøy og sende varsler om resultatene av oppgavebehandlingen. Utførelsen av kodeprøving kan akselereres ved å organisere parallell bygging av prosjektet ved hjelp av ulike virtuelle maskiner.

▍7. Støtte for distribuerte miljøer

Jenkins gjør det mulig å organisere distribuerte bygg ved å bruke flere datamaskiner. Denne muligheten er anvendelig i store prosjekter og bruker et arbeidsmønster der det finnes én hoved Jenkins-server og flere underordnede maskiner. Underordnede maskiner kan også brukes i situasjoner der det er nødvendig å organisere testing av prosjektet i forskjellige miljøer. Disse mulighetene skiller Jenkins gunstig fra andre lignende prosjekter.

Bli kjent med GitLab

Kampen mellom Jenkins og GitLab CI/CD
GitLab CI/CD kan betraktes som et av de nyeste og mest elskede verktøyene blant DevOps-ingeniører. Dette gratis åpen kildekode-verktøyet er innebygd i versjonskontrollsystemet GitLab. GitLab-plattformen har en community-versjon som støtter administrasjon av repositorier, verktøy for feilsporing, organisering av kodegjennomganger og mekanismer som er rettet mot å lage dokumentasjon. Selskaper kan installere GitLab lokalt, og knytte dette systemet til Active Directory og LDAP-servere for å organisere sikker godkjenning og autentisering av brukere.

Her er videoguide som vil hjelpe deg med å lære hvordan du lager CI/CD-pipelines ved å bruke funksjonene til GitLab CI/CD.

Opprinnelig ble GitLab CI/CD utgitt som et selvstendig prosjekt, men i 2015 ble dette verktøysettet integrert i GitLab 8.0. En egen GitLab CI/CD-server kan støtte mer enn 25000 brukere. På grunnlag av slike servere kan man lage systemer med høy tilgjengelighet.

GitLab CI/CD og hovedprosjektet GitLab er skrevet i Ruby og Go. De er utgitt under MIT-lisensen. GitLab CI/CD, i tillegg til de vanlige CI/CD-verktøyfunksjonene, støtter også ekstra funksjoner knyttet til for eksempel oppgaveplanlegging.

Det er svært enkelt å integrere GitLab CI/CD i et prosjekt. Ved bruk av GitLab CI/CD deles prosessen med å behandle prosjektkoden opp i faser, hvor hver fase kan bestå av flere oppgaver utført i en bestemt rekkefølge. Oppgavene kan tilpasses nøye.

Oppgavene kan utføres parallelt. Etter at rekkefølgen av faser og oppgaver er konfigurert, er CI/CD-pipelinen klar til å brukes. Man kan overvåke fremdriften ved å følge med på statusen til oppgavene. Dermed er det svært praktisk å bruke GitLab CI/CD, muligens mer praktisk enn andre lignende verktøy.

Egenskaper ved GitLab CI/CD og GitLab

GitLab CI/CD er et av de mest populære DevOps-verktøyene. Prosjektet kjennetegnes av kvaliteten på dokumentasjonen, som er enkel og brukervennlig. Hvis du ikke har blitt kjent med GitLab CI/CD ennå, vil følgende liste over funksjoner gi deg en generell oversikt over hva du kan forvente av dette verktøyet. Det er verdt å merke seg at mange av disse funksjonene er knyttet til selve GitLab-plattformen, som GitLab CI/CD er integrert i.

▍1. Popularitet

GitLab CI/CD er et relativt nytt verktøy som har funnet bred anvendelse. GitLab CI/CD har langsomt blitt et ekstremt populært CI/CD-verktøy brukt til automatisert testing og distribusjon av programvare. Det er enkelt å konfigurere. Dette er dessuten et gratis CI/CD-verktøy, innebygd i GitLab-plattformen.

▍2. Støtte for GitLab Pages og Jekyll

Jekyll er en generator for statiske nettsteder som kan brukes i GitLab Pages-systemet for å lage nettsteder basert på GitLab-repositorier. Systemet tar inn kildeinnhold og genererer et klart statisk nettsted basert på dette. Utseendet og funksjonene til slike nettsteder kan administreres ved å redigere filen _config.yml, brukt av Jekyll.

▍3. Prosjektplanleggingsevner

Ved å planlegge prosjektfaser øker det bekvemmeligheten ved å spore problemer og deres grupper. Dette gjør det mulig å organisere arbeidet med prosjektene og planlegge gjennomføringen på en spesifikk dato.

▍4. Automatisk skalering av CI-runnere

Ved hjelp av automatisk skalering av runnerne, som er ansvarlige for å utføre spesifikke oppgaver, kan man spare betydelige kostnader på leie av serverressurser. Dette er svært viktig, spesielt i miljøer der prosjekttesting utføres parallelt. I tillegg er det avgjørende for store prosjekter bestående av flere repositoryer.

▍5. Problemer og feilsporing

De kraftige mulighetene for sporing av problemer i GitLab har ført til at mange open source-prosjekter bruker denne plattformen. GitLab CI/CD gjør det mulig å utføre parallell testing av ulike kodegrener. Testresultatene kan enkelt analyseres i systemets grensesnitt. Dette skiller GitLab CI/CD fordelaktig fra Jenkins.

▍6. Tilgangsbegrensning til repositoryer

GitLab-plattformen støtter tilgangsbegrensninger til repositoryer. For eksempel kan personer som samarbeider om et prosjekt i et repository tildeles rettigheter som tilsvarer deres roller. Dette er spesielt relevant for bedriftsprosjekter.

▍7. Aktivt fellesskapsstøtte

Det har oppstått et aktivt fellesskap rundt GitLab som bidrar til utviklingen av denne plattformen og dens verktøy, spesielt GitLab CI/CD. Den dype integrasjonen mellom GitLab CI/CD og GitLab forenkler også tilgangen til svar på spørsmål som oppstår når man jobber med GitLab CI/CD.

▍8. Støtte for ulike versjonskontrollsystemer

GitLab CI/CD er et system som kan fungere ikke bare med kode plassert i GitLab-repositoryer. For eksempel kan koden lagres i et GitHub-repository, mens CI/CD-pipelinen kan organiseres basert på GitLab ved hjelp av GitLab CI/CD.

Sammenligning av Jenkins og GitLab CI/CD

Jenkins og GitLab CI/CD er begge svært gode verktøy, hver enkelt av dem kan sikre en normal drift av CI/CD-pipelinen. Men ved å sammenligne dem, viser det seg at selv om de ligner på mange måter, har de også noen forskjeller.

Egenskaper
. Jeg vil svare slik. For de fleste oppgaver
GitLab CI/CD

Åpen eller lukket kode
Åpen kildekode
Åpen kildekode

Installasjon
Er nødvendig.
Det er ikke nødvendigt, da det er en indbygget funktion i GitLab-platformen.

Unikke funktioner
Plugin-support.
Dyb integration i versionskontrolsystemet.

Støtte
Fraværende.
Tilgængelig.

Installasjon og konfigurasjon
Der er ingen vanskeligheder.
Der er ingen vanskeligheder.

Selvstændig udrulning af systemet.
Dette er den eneste anvendelsesmulighed for systemet.
Understøttes.

Oprettelse af CI/CD-pipelines.
Understøttes, bruger Jenkins Pipeline.
Understøttes.

Overvågning af applikationsydelse.
Fraværende.
Tilgængelig.

Økosystem
Der findes over 1000 plugins.
Systemet udvikles inden for rammerne af GitLab.

API
Understøtter et udviklet API-system.
Tilbyder API til dybere integration i projekter.

JavaScript-support
Tilgængelig.
Tilgængelig.

Integration med andre værktøjer.
Understøtter integration med andre værktøjer og platforme (Slack, GitHub).
Mange værktøjer til integration med tredjepartssystemer, især med GitHub og Kubernetes.

Kvalitetskontrol af kode.
Understøttes — ved hjælp af SonarQube-plugin og andre plugins.
Understøttes.

Forskelle mellem Jenkins og GitLab CI/CD

Efter at have beskrevet og sammenlignet Jenkins og GitLab CI/CD, lad os fokusere på forskellene mellem disse DevOps-værktøjer. Viden om disse forskelle vil hjælpe dem, der foretrækker et af disse værktøjer frem for det andet.

  • GitLab CI/CD kan fuldt ud kontrollere Git-repositorier. Det handler om at administrere grene af repositories og nogle andre muligheder. Jenkins, selvom det kan arbejde med repositories, giver ikke det samme niveau af kontrol over dem som GitLab CI/CD.
  • Jenkins er et gratis open source-projekt. Den, der vælger det, udruller det selv. GitLab CI/CD er inkluderet i GitLab-platformen, det er en færdig løsning.
  • GitLab CI/CD understøtter avancerede opgavestyringsværktøjer, der fungerer på projektiveau. Denne del af Jenkins er mindre udviklet.

Jenkins og GitLab CI/CD: Styrker og svagheder

Nu har du fået et vist indtryk af Jenkins og GitLab CI/CD. For at du kan lære disse værktøjer endnu bedre at kende, lad os se på deres styrker og svagheder. Vi håber, du allerede har truffet en beslutning om, hvilket værktøj du har brug for. Vi håber, at dette afsnit vil lade dig teste dig selv.

▍Styrker ved Jenkins

  • Et stort antal plugins.
  • Fuld kontrol over installationen af værktøjet.
  • Nem debugging af runners.
  • Nem opsætning af noder.
  • Nem udrulning af kode.
  • Veldig bra system for håndtering av brukerdata.
  • Fleksibilitet og allsidighet.
  • Støtte for ulike programmeringsspråk.
  • Systemet er intuitivt forståelig.

▍Svakheter ved Jenkins

  • Bruk av plugins kan føre til problemer.
  • Ved bruk av Jenkins i små prosjekter kan tiden som kreves for å konfigurere det, vise seg å være uforholdsmessig stor.
  • Manglende generelle analyser av CI/CD-kjeder.

▍Styrker ved GitLab CI/CD

  • God integrasjon med Docker.
  • Enkel skalering av runners.
  • Parallell utførelse av oppgaver i CI/CD-pipelinen.
  • Bruk av en orientert acyklisk graf for å konfigurere oppgaveforhold.
  • Høy grad av skalerbarhet på grunn av muligheten for parallell kjøring av runners.
  • Enkelhet i å legge til oppgaver.
  • Enkel konfliktløsning.
  • Pålitelig sikkerhetssystem.

▍Svakheter ved GitLab CI/CD

  • For hver oppgave må man beskrive og laste opp/ut artefakter.
  • Det er ikke mulig å teste resultatene av sammenslåing av grener før de faktisk samles.
  • I beskrivelsen av CI/CD-pipeliner er det ennå ikke mulig å skille ut enkelte faser.

Resultater

Både Jenkins og GitLab CI/CD har sterke og svake sider. Valget mellom de to avhenger av behovene og egenskapene til det spesifikke prosjektet. Hver av de CI/CD-verktøyene vi har sett på i dag har sine egne kjennetegn, selv om de er laget for å løse det samme problemet. Jenkins er et frittstående verktøy, mens GitLab CI/CD er en del av en plattform utviklet for samarbeid om kode.

Når man velger CI/CD-system, bør man i tillegg til funksjonaliteten også vurdere kostnadene forbundet med det, samt hva DevOps-ingeniører som støtter prosjektet er vant til å jobbe med.

Hvilke CI/CD-verktøy bruker dere?

Kampen mellom Jenkins og GitLab CI/CD

Kampen mellom Jenkins og GitLab CI/CD

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster