Under det senaste decenniet har betydande framsteg gjorts i utvecklingen av verktyg för kontinuerlig integration (Continuous Integration, CI) och kontinuerlig distribution (Continuous Delivery, CD). Utvecklingen av teknologier för att integrera mjukvaruutveckling och drift (Development Operations, DevOps) har lett till en snabb ökning av efterfrÄgan pÄ CI/CD-verktyg. Befintliga lösningar förbÀttras stÀndigt, försöker hÀnga med i tiden, deras nya versioner slÀpps, i en vÀrld av kvalitetssÀkringsprogramvara (Quality Assurance, QA) dyker det stÀndigt upp mÄnga nya produkter. Med en sÄdan mÀngd valmöjligheter Àr det ingen lÀtt uppgift att vÀlja rÀtt verktyg.
Bland alla befintliga CI/CD-verktyg finns det tvĂ„ projekt som definitivt Ă€r vĂ€rda att uppmĂ€rksamma nĂ„gon som letar efter nĂ„got frĂ„n detta omrĂ„de. Vi pratar om Jenkins och GitLab CI/CD-verktyget, som Ă€r en del av GitLab-plattformen. Jenkins har mer Ă€n stjĂ€rnor pĂ„ GitHub. GitLab-förrĂ„det pĂ„ gitlab.com fick lite mer poĂ€ng stjĂ€rnor. Om vi ââjĂ€mför förvarens popularitet, visar det sig att Jenkins fick 8 gĂ„nger fler stjĂ€rnor Ă€n plattformen, som inkluderar GitLab CI / CD. Men nĂ€r du vĂ€ljer ett CI / CD-verktyg Ă€r detta lĂ„ngt ifrĂ„n den enda indikatorn som du bör vara uppmĂ€rksam pĂ„. Det finns mĂ„nga andra, och detta förklarar varför Jenkins och GitLab CI/CD i mĂ„nga jĂ€mförelser ligger vĂ€ldigt nĂ€ra varandra.
Ta till exempel data frĂ„n G2-plattformen, som samlar recensioner av en mĂ€ngd olika produkter och de betyg som anvĂ€ndarna ger dem. HĂ€r Ă€r medelbetyget , baserat pĂ„ 288 recensioner, Ă€r 4,3 stjĂ€rnor. Ă
h Äh det finns 270 recensioner, det genomsnittliga betyget för detta verktyg Àr 4,4 stjÀrnor. Vi kommer inte att ta fel nÀr vi sÀger att Jenkins och GitLab CI/CD konkurrerar med varandra pÄ lika villkor. Det Àr intressant att notera att Jenkins-projektet dök upp 2011 och sedan dess har det varit ett favoritverktyg för testare. Men samtidigt har GitLab CI/CD-projektet, som lanserades 2014, tagit sin position, mycket högt, tack vare de avancerade funktionerna som erbjuds av denna plattform.
Om vi ââpratar om Jenkins popularitet i jĂ€mförelse med andra liknande plattformar, noterar vi att vi, efter att ha publicerat en artikel som jĂ€mförde Travis CI och Jenkins plattformar, arrangerade en undersökning. 85 anvĂ€ndare deltog i det. Respondenterna ombads vĂ€lja det CI/CD-verktyg de gillar mest. 79 % valde Jenkins, 5 % valde Travis CI och 16 % angav att de föredrar andra verktyg.

Omröstningsresultat
Bland andra CI/CD-verktyg nÀmndes GitLab CI/CD oftast.
Om du menar allvar med DevOps mÄste du noggrant vÀlja lÀmpliga verktyg, med hÀnsyn till projektets detaljer, dess budget och andra krav. För att hjÀlpa dig att göra rÀtt val kommer vi att granska Jenkins och GitLab CI/CD. Detta kommer förhoppningsvis att hjÀlpa dig att göra rÀtt val.
Introduktion till Jenkins

Jenkins Àr ett allmÀnt kÀnt, flexibelt CI/CD-verktyg utformat för att automatisera en mÀngd olika uppgifter relaterade till programvaruprojekt. Jenkins Àr skrivet helt i Java och slÀppt under MIT-licensen. Det erbjuder en kraftfull uppsÀttning funktioner som syftar till att automatisera uppgifter relaterade till att bygga, testa, driftsÀtta, integrera och slÀppa programvara. Detta verktyg kan anvÀndas pÄ en mÀngd olika operativsystem. Dessa inkluderar: macOS, Windows och mÄnga distributioner Linux, till exempel - OpenSUSE, Ubuntu och Red Hat. Jenkins installationspaket finns tillgÀngliga för olika operativsystem, och verktyget kan installeras i Docker och pÄ alla system med en JRE (Java Runtime Environment).
Jenkins-utvecklarna har skapat ett annat projekt, Jenkins X, som Àr designat för att fungera i en Kubernetes-miljö. Jenkins X integrerar Helm, Jenkins CI/CD Server, Kubernetes och andra verktyg för att bygga CI/CD-pipelines som följer DevOps bÀsta praxis. Till exempel anvÀnds GitOps hÀr.
Man kan lÀgga till skattkammaren av fördelarna med Jenkins det faktum att dess manus Àr mycket vÀlstrukturerade, begripliga och lÀtta att lÀsa. Jenkins-teamet har skapat cirka 1000 plugins som syftar till att organisera interaktionen mellan Jenkins med en mÀngd olika teknologier. Skript kan anvÀnda autentiseringssystem, som till exempel lÄter dig ansluta till olika slutna system.
Under driften av Jenkins pipeline kan du observera vad som hÀnder vid varje steg, om vissa stadier av arbetet har slutförts framgÄngsrikt eller inte. Du kan dock se allt detta utan att anvÀnda ett visst grafiskt grÀnssnitt, utan att anvÀnda terminalens möjligheter.
Funktioner hos Jenkins
Bland de vĂ€lkĂ€nda funktionerna hos Jenkins Ă€r enkel installation, en hög grad av automatisering av olika operationer och utmĂ€rkt dokumentation. Om vi ââpratar om att lösa DevOps-uppgifter, anses Jenkins hĂ€r vara ett mycket tillförlitligt verktyg, med vilket det som regel Ă€r meningslöst att noggrant övervaka hela processen med projektbearbetning. Detta Ă€r inte fallet med andra CI/CD-verktyg. LĂ„t oss prata om nĂ„gra av de viktigaste egenskaperna hos Jenkins.
â1. Gratis, öppen kĂ€llkod, stöd för flera plattformar
Jenkins kan köras pÄ plattformar macOS, Windows О LinuxDet kan ocksÄ köras i en Docker-miljö, vilket möjliggör konsekvent och snabb körning av automatiserade uppgifter. Verktyget kan ocksÄ köras som en servlet i Java-aktiverade containrar, som Apache Tomcat och GlassFish. Att installera Jenkins Àr en högkvalitativ process. .
â2. Utvecklat plugin-ekosystem
Jenkins plugin-ekosystem verkar vara mycket mer mogen Àn plugin-ekosystemen för andra CI/CD-verktyg. Det finns för nÀrvarande över 1500 plugins för Jenkins. Dessa plugins syftar till att lösa ett brett utbud av uppgifter, med deras hjÀlp kan du automatisera en mÀngd olika projekt. MÀngden gratis plugins att vÀlja mellan innebÀr att om du anvÀnder Jenkins behöver du inte köpa dyra betalda plugins. Det finns en chans Jenkins med mÄnga DevOps-verktyg.
â3. Enkel installation och installation
Jenkins Àr ganska lÀtt att installera och konfigurera. Samtidigt Àr processen att uppdatera systemet ocksÄ mycket bekvÀm. HÀr Àr det Äterigen vÀrt att nÀmna kvaliteten pÄ dokumentationen, eftersom den i den kan hitta svar pÄ en mÀngd olika frÄgor relaterade till installation och konfigurering av Jenkins.
â4. VĂ€nlig gemenskap
Som redan nÀmnts Àr Jenkins ett projekt med öppen kÀllkod, vars ekosystem inkluderar ett stort antal plugins. En stor grupp av anvÀndare och utvecklare har utvecklats runt Jenkins för att hjÀlpa till att utveckla projektet. Gemenskapen Àr en av faktorerna som driver utvecklingen av Jenkins.
â5. TillgĂ€nglighet för REST API
NÀr du arbetar med Jenkins kan du anvÀnda REST API, som utökar systemets möjligheter. API för fjÀrrÄtkomst till systemet presenteras i tre versioner: XML, JSON med JSONP-stöd, Python. Dokumentationssida som tÀcker detaljer om att arbeta med Jenkins REST API.
â6. Stöd för parallellt utförande av arbetsuppgifter
Jenkins stöder parallellisering av DevOps-uppgifter. Det kan enkelt integreras med relevanta verktyg och ta emot meddelanden om resultaten av uppgifter. Kodtestning kan pÄskyndas genom att organisera en parallell uppbyggnad av projektet med olika virtuella maskiner.
â7. Stöd för arbete i distribuerade miljöer
Jenkins lÄter dig organisera distribuerade builds med hjÀlp av flera datorer. Denna funktion Àr tillÀmplig i stora projekt och anvÀnder ett arbetsschema, enligt vilket det finns en master Jenkins-server och flera slavmaskiner. Slavmaskiner kan ocksÄ anvÀndas i situationer dÀr det Àr nödvÀndigt att organisera testning av ett projekt i olika miljöer. Dessa funktioner skiljer Jenkins frÄn andra liknande projekt.
Introduktion till GitLab

kan kallas ett av de nyaste och mest Àlskade DevOps-verktygen. Detta gratis verktyg med öppen kÀllkod Àr inbyggt i GitLabs versionskontrollsystem. GitLab-plattformen har en communityversion, den stöder förvarshantering, problemspÄrningsverktyg, organisation av kodgranskning, dokumentationsorienterade mekanismer. Företag kan installera GitLab lokalt, lÀnka det till Active Directory och LDAP-servrar för sÀker anvÀndarauktorisering och autentisering.
En videohandledning som hjÀlper dig att lÀra dig hur du skapar CI/CD-pipelines med GitLabs CI/CD-funktioner.
GitLab CI/CD slÀpptes ursprungligen som ett fristÄende projekt, men 2015 integrerades denna uppsÀttning verktyg i GitLab 8.0. En enda GitLab CI/CD-server kan stödja över 25000 XNUMX anvÀndare. Baserat pÄ sÄdana servrar kan du skapa system som Àr högst tillgÀngliga.
GitLab CI/CD och det huvudsakliga GitLab-projektet Àr skrivna i Ruby and Go. De slÀpps under MIT-licensen. GitLab CI/CD stöder, utöver de vanliga funktionerna i CI/CD-verktyg, Àven ytterligare funktioner relaterade, till exempel till arbetsschemalÀggning.
Att integrera GitLab CI/CD i ett projekt Àr vÀldigt enkelt. Vid anvÀndning av GitLab CI/CD delas projektkodbehandlingsprocessen in i steg som var och en kan bestÄ av flera uppgifter utförda i en viss ordning. Uppgifter kan finjusteras.
Uppgifter kan köras parallellt. Efter att ha stÀllt in sekvensen av steg och uppgifter Àr CI/CD-pipelinen redo att gÄ. Du kan övervaka dess framsteg genom att övervaka status för uppgifter. Som ett resultat Àr det mycket bekvÀmt att anvÀnda GitLab CI / CD, kanske bekvÀmare Àn andra liknande verktyg.
Funktioner i GitLab CI/CD och GitLab
GitLab CI/CD Àr ett av de mest populÀra DevOps-verktygen. Projektet kÀnnetecknas av högkvalitativ dokumentation, dess funktioner Àr enkla och bekvÀma att anvÀnda. Om du Ànnu inte Àr bekant med GitLab CI/CD, kommer följande lista över detta verktygs funktioner att ge dig en allmÀn uppfattning om vad du kan förvÀnta dig av det. Det bör noteras att mÄnga av dessa funktioner Àr relaterade till sjÀlva GitLab-plattformen, i vilken GitLab CI/CD Àr integrerad.
â1. Popularitet
GitLab CI/CD Àr ett relativt nytt verktyg som har fÄtt stor anvÀndning. GitLab CI/CD har sakta blivit ett enormt populÀrt CI/CD-verktyg som anvÀnds för automatiserad testning och programvarudistribution. Det Àr enkelt att stÀlla in. Det Àr ocksÄ ett gratis CI/CD-verktyg inbyggt i GitLab-plattformen.
â2. Stöd för GitLab Pages och Jekyll
Jekyll Àr en statisk webbplatsgenerator som kan anvÀndas inom GitLab Pages-systemet för att skapa webbplatser baserade pÄ GitLab-arkiv. Systemet tar kÀllmaterialet och genererar en fÀrdig statisk sajt utifrÄn dem. Du kan kontrollera utseendet och funktionerna pÄ sÄdana webbplatser genom att redigera filen _config.yml, som anvÀnds av Jekyll.
â3. ProjektplaneringsförmĂ„ga
Tack vare förmÄgan att planera projektstadierna ökar bekvÀmligheten med att spÄra problem och deras grupper. Detta gör att du kan hantera organisationen av arbetet med projekt, planera deras genomförande pÄ ett specifikt datum.
â4. Automatisk skalning av CI-löpare
Tack vare den automatiska skalningen av löpare som ansvarar för att utföra specifika uppgifter kan du spara mycket pÄ kostnaden för att hyra serverkapacitet. Detta Àr mycket viktigt, sÀrskilt nÀr det gÀller miljöer dÀr projekt testas parallellt. Dessutom Àr detta viktigt för stora projekt som bestÄr av flera förvar.
â5. UtfĂ€rda spĂ„rningsverktyg
GitLabs kraftfulla problemspÄrningsfunktioner har fÄtt mÄnga projekt med öppen kÀllkod att anvÀnda plattformen. GitLab CI/CD tillÄter parallell testning av olika kodgrenar. Testresultaten analyseras bekvÀmt i systemgrÀnssnittet. Detta skiljer GitLab CI/CD frÄn Jenkins.
â6. BegrĂ€nsa Ă„tkomsten till förrĂ„d
GitLab-plattformen stöder begrÀnsning av Ätkomst till arkiv. Till exempel kan de som samarbetar i ett projekt i ett arkiv tilldelas behörigheter som passar deras roller. Detta gÀller sÀrskilt för företagsprojekt.
â7. Aktivt samhĂ€llsstöd
En aktiv community har utvecklats kring GitLab, vilket bidrar till utvecklingen av denna plattform och dess verktyg, i synnerhet GitLab CI/CD. Djup integration av bland annat GitLab CI/CD och GitLab gör det enkelt att hitta svar pÄ frÄgor som dyker upp nÀr man arbetar med GitLab CI/CD.
â8. Stöd för olika versionskontrollsystem
GitLab CI/CD Àr ett system som kan fungera med mer Àn bara kod vÀrd i GitLab-förrÄd. Till exempel kan koden lagras i ett GitHub-förrÄd, och CI/CD-pipelinen kan organiseras pÄ basis av GitLab med GitLab CI/CD.
JÀmförelse av Jenkins och GitLab CI/CD
Jenkins och GitLab CI/CD Àr mycket bra verktyg, som bÄda kan fÄ CI/CD-pipelinen att fungera smidigt. Men om man jÀmför dem visar det sig att Àven om de Àr lika pÄ mÄnga sÀtt sÄ skiljer de sig frÄn varandra pÄ vissa sÀtt.
Karakterisering
Jenkins
GitLab CI / CD
Ăppen kĂ€llkod eller stĂ€ngd kĂ€lla
öppen kÀlla
öppen kÀlla
Installation
NödvÀndig.
KrÀvs inte eftersom detta Àr en inbyggd funktion i GitLab-plattformen.
Unika funktioner
Plugin-stöd.
Djup integration i versionskontrollsystem.
Support
Saknas
TillgÀngligt.
Installation och konfiguration
SvÄrigheter orsakar inte
SvÄrigheter orsakar inte
SjÀlvdistribuering av systemet
Detta Àr det enda sÀttet att anvÀnda systemet.
Stöds.
Skapa CI/CD-pipelines
Stöds, med Jenkins Pipeline.
Stöds.
Ăvervakning av applikationsprestanda
Saknas
TillgÀngligt.
Ekosystem
Det finns över 1000 plugins.
Systemet utvecklas inom GitLab.
API
Stöder ett avancerat API-system.
Erbjuder ett API för djupare integration i projekt.
JavaScript-stöd
TillgÀngligt.
TillgÀngligt.
Integration med andra verktyg
Integration med andra verktyg och plattformar stöds (Slack, GitHub).
MÄnga verktyg för integration med tredjepartssystem, i synnerhet - med GitHub och Kubernetes.
Kod kvalitetskontroll
Stöds - med SonarQube-plugin och andra plugins.
Stöds.
Skillnader mellan Jenkins och GitLab CI/CD
Efter att ha beskrivit och jÀmfört Jenkins och GitLab CI/CD, lÄt oss fokusera pÄ skillnaderna mellan dessa DevOps-verktyg. Att kÀnna till dessa skillnader hjÀlper dig att förstÄ dem som föredrar ett av dessa verktyg framför det andra.
- GitLab CI/CD kan helt kontrollera Git-förrÄd. Vi pratar om att hantera förvarsgrenar och nÄgra andra funktioner. Men Jenkins, Àven om det kan fungera med repositories, ger inte samma nivÄ av kontroll över dem som GitLab CI/CD.
- Jenkins Àr ett gratis projekt med öppen kÀllkod. Den som vÀljer det distribuerar det sjÀlvstÀndigt. Och GitLab CI / CD ingÄr i GitLab-plattformen, detta Àr en nyckelfÀrdig lösning.
- GitLab CI/CD stöder avancerade uppgiftshanteringsverktyg som fungerar pÄ projektnivÄ. Den hÀr sidan av Jenkins Àr mindre utvecklad.
Jenkins och GitLab CI/CD: styrkor och svagheter
Nu har du en uppfattning om Jenkins och GitLab CI/CD. Nu, för att göra dig Ànnu bÀttre bekant med dessa verktyg, lÄt oss ta en titt pÄ deras styrkor och svagheter. Vi antar att du redan har bestÀmt dig för vilket verktyg du behöver. Förhoppningsvis kommer det hÀr avsnittet att lÄta dig testa dig sjÀlv.
â Jenkins styrkor
- Ett stort antal plugins.
- Full kontroll över verktygsinstallationen.
- Enkel felsökning av löpare.
- Enkel nodinstallation.
- Enkel koddistribution.
- Mycket bra legitimationshanteringssystem.
- Flexibilitet och mÄngsidighet.
- Stöd för olika programmeringssprÄk.
- Systemet Àr förstÄeligt pÄ en intuitiv nivÄ.
âSvagheter hos Jenkins
- Plugins kan vara knepiga att anvÀnda.
- NÀr du anvÀnder Jenkins i smÄ projekt kan tiden som krÀvs för att konfigurera det sjÀlv vara orimligt lÄng.
- Brist pÄ allmÀn analytisk information om CI/CD-kedjor.
â Styrkor med GitLab CI/CD
- Bra integration med Docker.
- Enkel skalning av löpare.
- Parallellt utförande av uppgifter som ingÄr i CI/CD-pipelinens stadier.
- AnvÀnda den riktade acykliska grafmodellen nÀr du stÀller in uppgiftsrelationer.
- Hög grad av skalbarhet tack vare möjligheten till parallellt utförande av löpare.
- LÀtt att lÀgga till uppgifter.
- Enkel konfliktlösning.
- PÄlitligt sÀkerhetssystem.
âSvagheter med GitLab CI/CD
- För varje uppgift mÄste du beskriva och ladda upp/ladda ner artefakter.
- Du kan inte testa resultaten av sammanslagna grenar innan de faktiskt slÄs samman.
- NÀr man beskriver stegen i CI/CD-pipelinen Àr det Ànnu inte möjligt att peka ut enskilda steg i dem.
Resultat av
BÄde Jenkins och GitLab CI/CD har styrkor och svagheter. Svaret pÄ frÄgan om vad man ska vÀlja beror pÄ behoven och egenskaperna hos ett visst projekt. Vart och ett av de CI/CD-verktyg som granskas idag har vissa funktioner, Àven om dessa verktyg skapades för att lösa samma problem. Samtidigt Àr Jenkins ett fristÄende verktyg, och GitLab CI/CD Àr en del av en plattform designad för att samarbeta kring kod.
NÀr du vÀljer ett CI / CD-system, utöver dess kapacitet, Àr det vÀrt att ta hÀnsyn till kostnaderna som kan vara förknippade med det, och vad exakt DevOps-ingenjörer som stödjer projektet Àr vana vid att arbeta med.
Vilka CI/CD-verktyg anvÀnder du?
KĂ€lla: will.com
