Battle of Jenkins och GitLab CI/CD

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.

Battle of Jenkins och GitLab CI/CD

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 16000 stjärnor på GitHub. GitLab-förrådet på gitlab.com fick lite mer poäng 2000 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 Jenkins, baserat på 288 recensioner, är 4,3 stjärnor. Åh åh GitLab 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.

Battle of Jenkins och GitLab CI/CD
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

Battle of Jenkins och GitLab CI/CD
Jenkins är ett välkänt, flexibelt CI/CD-verktyg utformat för att automatisera många uppgifter relaterade till programvaruprojekt. Jenkins är skriven helt i Java och släppt under MIT-licensen. Den har en kraftfull uppsättning funktioner som syftar till att automatisera uppgifterna i samband med att bygga, testa, distribuera, integrera och släppa programvara. Detta verktyg kan användas på olika operativsystem. Dessa inkluderar macOS, Windows och många Linux-distributioner som OpenSUSE, Ubuntu och Red Hat. Det finns installationspaket för Jenkins designade för olika operativsystem, detta verktyg kan installeras på Docker och på alla system som har 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å macOS, Windows och Linux-plattformar. Det kan också fungera i en Docker-miljö, vilket låter dig organisera enhetlig och snabb utförande av automatiserade uppgifter. Det här verktyget kan också köras som en servlet i Java-aktiverade behållare som Apache Tomcat och GlassFish. Installation av Jenkins kvalitativt dokumenterat.

▍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 integration 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. Här 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

Battle of Jenkins och GitLab CI/CD
GitLab CI / CD 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.

Här 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?

Battle of Jenkins och GitLab CI/CD

Battle of Jenkins och GitLab CI/CD

Källa: will.com

Lägg en kommentar