De strijd tussen Jenkins en GitLab CI/CD

In het afgelopen decennium zijn er aanzienlijke vorderingen gemaakt op het gebied van ontwikkelingshulpmiddelen voor continue integratie (Continuous Integration, CI) en continue levering (Continuous Delivery, CD). De ontwikkeling van technologieƫn voor de integratie van softwareontwikkeling en -operaties (Development Operations, DevOps) heeft geleid tot een snelle stijging van de vraag naar CI/CD-hulpmiddelen. Bestaande oplossingen worden voortdurend verbeterd, met nieuwe versies die worden uitgebracht, en in de wereld van softwarekwaliteitsborging (Quality Assurance, QA) verschijnen er voortdurend nieuwe producten. Met zo'n overvloed aan keuze blijkt het selecteren van de juiste hulpmiddelen een uitdaging te zijn.

De strijd tussen Jenkins en GitLab CI/CD

Onder alle bestaande CI/CD-hulpmiddelen zijn er twee projecten die absoluut de aandacht verdienen voor iedereen die iets zoekt in deze sector. We hebben het over Jenkins en het GitLab CI/CD-hulpmiddel, dat onderdeel is van het GitLab-platform. Jenkins heeft meer dan 16000 sterren op GitHub. De GitLab-repository op gitlab.com heeft iets meer dan 2000 sterren verzameld. Als we de populariteit van de repositories vergelijken, blijkt dat Jenkins 8 keer meer sterren heeft verzameld dan het platform waar GitLab CI/CD onderdeel van uitmaakt. Maar bij het kiezen van een CI/CD-hulpmiddel is dit beslist niet de enige parameter waarop aandacht moet worden gevestigd. Er zijn veel andere factoren, en dit verklaart waarom Jenkins en GitLab CI/CD in veel vergelijkingen dicht bij elkaar liggen.

Laten we bijvoorbeeld naar de gegevens van het platform G2 kijken, dat beoordelingen en scores over verschillende producten verzamelt. Hier is de gemiddelde beoordeling Jenkins, gebaseerd op 288 beoordelingen, 4,3 sterren. En van GitLab daar zijn er 270 beoordelingen, waarvan de gemiddelde beoordeling van dit hulpmiddel 4,4 sterren bedraagt. We kunnen zonder twijfel stellen dat Jenkins en GitLab CI/CD concurreren op gelijke voet. Het is interessant op te merken dat het Jenkins-project in 2011 is opgericht en sindsdien de favoriete tool is van testers. Ondertussen heeft het GitLab CI/CD-project, dat in 2014 is gelanceerd, zijn hoge positie verworven, dankzij de geavanceerde mogelijkheden die dit platform biedt.

Als we de populariteit van Jenkins vergelijken met andere vergelijkbare platforms, willen we opmerken dat we, toen we een artikel publiceerden waarin de platforms Travis CI en Jenkins werden vergeleken, een enquĆŖte hebben gehouden. Hieraan hebben 85 gebruikers deelgenomen. De respondenten werd gevraagd om de CI/CD-tool te kiezen die ze het meest waarderen. 79% koos voor Jenkins, 5% koos voor Travis CI en 16% gaf aan andere tools te prefereren.

De strijd tussen Jenkins en GitLab CI/CD
Resultaten van de enquĆŖte

Onder andere CI/CD-tools werd GitLab CI/CD het meest genoemd.

Als je serieus bezig bent met DevOps, moet je de juiste tools zorgvuldig selecteren, rekening houdend met de kenmerken van het project, het budget en andere vereisten. Om je te helpen de juiste keuze te maken, gaan we een analyse uitvoeren van Jenkins en GitLab CI/CD. Dit, hopen we, zal je helpen de juiste beslissing te nemen.

Kennismaking met Jenkins

De strijd tussen Jenkins en GitLab CI/CD
Jenkins is een algemeen bekend, flexibel CI/CD-hulpmiddel dat is ontworpen voor het automatiseren van vele taken die verband houden met softwareprojecten. Jenkins is volledig geschreven in Java en is uitgebracht onder de MIT-licentie. Het heeft een krachtig scala aan functies voor het automatiseren van taken zoals bouwen, testen, implementeren, integreren en uitbrengen van software. Dit hulpmiddel kan op verschillende besturingssystemen worden gebruikt, waaronder macOS, Windows en verschillende Linux-distributies, zoals OpenSUSE, Ubuntu en Red Hat. Er zijn installatiepakketten van Jenkins voor verschillende besturingssystemen, en deze tool kan worden geĆÆnstalleerd in Docker en op elk systeem met een JRE (Java Runtime Environment).

De ontwikkelaars van Jenkins hebben nog een ander project gecreëerd, Jenkins X, dat is ontworpen voor gebruik in een Kubernetes-omgeving. In Jenkins X zijn Helm, de Jenkins CI/CD-server, Kubernetes en andere tools geïntegreerd die zijn bedoeld voor het creëren van CI/CD-pijplijnen die voldoen aan de beste praktijken van DevOps. Bijvoorbeeld, hier wordt GitOps gebruikt.

Een ander voordeel van Jenkins is dat zijn scripts zeer goed gestructureerd zijn, begrijpelijk en gemakkelijk te lezen. Het Jenkins-team heeft ongeveer 1000 plugins ontwikkeld die gericht zijn op het organiseren van de interactie tussen Jenkins en verschillende technologieƫn. In de scripts kunnen authenticatiesystemen worden gebruikt, wat bijvoorbeeld het mogelijk maakt om verbinding te maken met verschillende gesloten systemen.

Tijdens het werken met de Jenkins-pijplijn kan men zien wat er op elke stap gebeurt en of de verschillende fasen succesvol zijn afgerond of niet. Dit kan gedaan worden zonder een grafische interface, gewoon door gebruik te maken van de mogelijkheden van de terminal.

Kenmerken van Jenkins

Enkele van de bekendste kenmerken van Jenkins zijn de eenvoud van de configuratie, een hoog niveau van automatisering van verschillende processen en uitstekende documentatie. Wat betreft het oplossen van DevOps-problemen wordt Jenkins als een zeer betrouwbare tool beschouwd, waarbij het meestal niet nodig is om nauwlettend op het hele projectverwerkingsproces te letten. Dit is bij andere CI/CD-tools niet het geval. Laten we het hebben over enkele van de belangrijkste mogelijkheden van Jenkins.

ā–1. Gratis, open source, ondersteuning voor meerdere platformen

Jenkins kan draaien op macOS, Windows en Linux. Het functioneert ook in een Docker-omgeving, wat een uniforme en snelle uitvoering van geautomatiseerde taken mogelijk maakt. Dit hulpmiddel kan bovendien worden uitgevoerd als een servlet in containers die Java ondersteunen, zoals Apache Tomcat en GlassFish. De installatie van Jenkins is goed gedocumenteerd. gedocumenteerd.

ā–2. Ontwikkeld ecosysteem van plugins

Het ecosysteem van Jenkins-plugins is veel verder ontwikkeld in vergelijking met de ecosystemen van modules van andere CI/CD-tools. Momenteel zijn er meer dan 1500 plugins beschikbaar voor Jenkins. Deze plugins zijn gericht op een breed scala aan taken, waarmee verschillende projecten kunnen worden geautomatiseerd. De rijkdom aan beschikbare gratis modules betekent dat gebruikers van Jenkins niet per se dure betaalde plugins hoeven aan te schaffen. Er is een mogelijkheid tot integratie Jenkins met veel DevOps-tools.

ā–3. Eenvoudige installatie en configuratie

Jenkins is relatief eenvoudig te installeren en te configureren. Ook het proces van systeemupdates is zeer gebruiksvriendelijk. Hier moet opnieuw de kwaliteit van de documentatie worden genoemd, omdat deze antwoorden biedt op verschillende vragen die verband houden met de installatie en configuratie van Jenkins.

ā–4. Vriendelijke gemeenschap

Zoals eerder vermeld, is Jenkins een open-sourceproject met een ecosysteem dat een enorme hoeveelheid plugins omvat. Er is een grote gemeenschap van gebruikers en ontwikkelaars rond Jenkins die bijdragen aan de ontwikkeling van het project. De gemeenschap is een van de factoren die de ontwikkeling van Jenkins bevorderen.

ā–5. Beschikbaarheid van REST API

Tijdens het werken met Jenkins kan je gebruikmaken van de REST API, wat de mogelijkheden van het systeem uitbreidt. De API voor externe toegang tot het systeem is beschikbaar in drie formaten: XML, JSON met ondersteuning voor JSONP en Python. Hier is documentatiepagina die de details van het werken met de REST API van Jenkins uitlegt.

ā–6. Ondersteuning voor parallelle uitvoering van taken

Jenkins ondersteunt het parallel uitvoeren van DevOps-taken. Het kan eenvoudig worden geĆÆntegreerd met de bijbehorende tools en meldingen geven over de resultaten van de uitgevoerde taken. Het uitvoeren van code-testen kan worden versneld door parallelle builds van het project op te zetten met behulp van verschillende virtuele machines.

ā–7. Ondersteuning voor werken in gedistribueerde omgevingen

Jenkins stelt je in staat om gedistribueerde builds uit te voeren met meerdere computers. Deze mogelijkheid is van toepassing op grote projecten en volgt een werkschema waarin er ƩƩn hoofddocumentserver van Jenkins is en verschillende ondergeschikte machines. Onderliggende machines kunnen ook worden gebruikt in situaties waarin het nodig is om projecttests in verschillende omgevingen op te zetten. Deze mogelijkheden onderscheiden Jenkins gunstig van andere soortgelijke projecten.

Introductie tot GitLab

De strijd tussen Jenkins en GitLab CI/CD
GitLab CI/CD kan worden beschouwd als een van de nieuwste en meest geliefde tools onder DevOps-engineers. Deze gratis open-source tool is ingebouwd in het versiebeheersysteem GitLab. Het GitLab-platform heeft een community-versie die het beheer van repositories, middelen voor het volgen van problemen, organisatie van code-review en mechanismen voor documentatieontwikkeling ondersteunt. Bedrijven kunnen GitLab lokaal installeren en deze systeemkoppeling met Active Directory en LDAP-servers voor veilige autorisatie en gebruikersauthenticatie maken.

Hier is videogids die je helpt leren hoe je CI/CD-pijplijnen kunt creƫren met de mogelijkheden van GitLab CI/CD.

Oorspronkelijk werd GitLab CI/CD uitgebracht als een zelfstandig project, maar dit set van hulpmiddelen werd in 2015 geĆÆntegreerd in GitLab 8.0. Een aparte GitLab CI/CD-server kan meer dan 25.000 gebruikers ondersteunen. Op basis van dergelijke servers kunnen systemen worden gemaakt die hoge beschikbaarheid bieden.

GitLab CI/CD en het hoofdproject GitLab zijn geschreven in Ruby en Go. Ze zijn vrijgegeven onder de MIT-licentie. GitLab CI/CD biedt naast de gebruikelijke functies van CI/CD-hulpmiddelen ook extra mogelijkheden, zoals het plannen van taken.

Het integreren van GitLab CI/CD in een project is heel eenvoudig. Bij het gebruik van GitLab CI/CD wordt het proces van codeverwerking verdeeld in fasen, waarvan elke fase uit verschillende taken kan bestaan die in een bepaalde volgorde worden uitgevoerd. Taken kunnen fijn worden afgesteld.

Taken kunnen parallel worden uitgevoerd. Na het instellen van de volgorde van de fasen en taken is de CI/CD-pijplijn klaar voor gebruik. De voortgang kan worden gevolgd door de status van de taken te controleren. Het gebruik van GitLab CI/CD is zeer handig en mogelijk handiger dan andere soortgelijke hulpmiddelen.

Kenmerken van GitLab CI/CD en GitLab

GitLab CI/CD is een van de populairste DevOps-hulpmiddelen. Het project onderscheidt zich door een goede documentatie en de mogelijkheden zijn gemakkelijk en handig in gebruik. Als je nog niet bekend bent met GitLab CI/CD, zal de volgende lijst met mogelijkheden je een algemeen inzicht geven in wat je van dit hulpmiddel kunt verwachten. Het is belangrijk op te merken dat veel van deze mogelijkheden betrekking hebben op het GitLab-platform zelf, waarin GitLab CI/CD is geĆÆntegreerd.

ā–1. Populariteit

GitLab CI/CD is een relatief nieuw hulpmiddel dat brede toepassing heeft gevonden. GitLab CI/CD is geleidelijk aan een uiterst populair CI/CD-hulpmiddel geworden dat wordt gebruikt voor geautomatiseerde testen en implementatie van software. Het is eenvoudig te configureren. Bovendien is het een gratis CI/CD-hulpmiddel, ingebouwd in het GitLab-platform.

ā–2. Ondersteuning voor GitLab Pages en Jekyll

Jekyll is een statische sitegenerator die kan worden gebruikt binnen het GitLab Pages-systeem om websites te maken op basis van GitLab-repositories. Het systeem neemt de bronmaterialen en genereert op basis daarvan een kant-en-klaar statische website. Het uiterlijk en de functionaliteiten van dergelijke sites kunnen worden beheerd door het bestand _config.yml, gebruikt Jekyll.

ā–3. Projectplanning mogelijkheden

Met de mogelijkheid om projectfases te plannen, wordt het gemak van probleemtracking en -groepering verhoogd. Dit maakt het mogelijk om projectwerkzaamheden te beheren en hun uitvoering op een specifieke datum te plannen.

ā–4. Automatische schaalvergroting van CI-runners

Dankzij automatische schaalvergroting van runners, die verantwoordelijk zijn voor het uitvoeren van specifieke taken, kunnen aanzienlijke besparingen worden gerealiseerd op de kosten van servercapaciteit. Dit is vooral belangrijk in omgevingen waar projecttesten parallel worden uitgevoerd. Bovendien is dit cruciaal voor grote projecten die uit meerdere repositories bestaan.

ā–5. Probleemtracking tools

De krachtige probleemtracking mogelijkheden van GitLab hebben ertoe geleid dat veel open-source projecten deze platform gebruiken. GitLab CI/CD maakt parallel testen van verschillende code branches mogelijk. De testresultaten kunnen eenvoudig worden geanalyseerd in de systeeminterface. Dit onderscheidt GitLab CI/CD van Jenkins.

ā–6. Toegangsbeperkingen voor repositories

Het GitLab-platform ondersteunt toegangsbeperkingen voor repositories. Bijvoorbeeld, degenen die samen aan een project werken in een bepaalde repository, kunnen rechten krijgen die overeenkomen met hun rollen. Dit is vooral relevant voor bedrijfsprojecten.

ā–7. Actieve communityondersteuning

Rondom GitLab is een actieve gemeenschap ontstaan die bijdraagt aan de ontwikkeling van dit platform en zijn tools, met name GitLab CI/CD. De diepe integratie van GitLab CI/CD met GitLab maakt het ook gemakkelijker om antwoorden te vinden op vragen die zich voordoen bij het werken met GitLab CI/CD.

ā–8. Ondersteuning voor verschillende versiebeheersystemen

GitLab CI/CD is een systeem dat niet alleen met code kan werken die in GitLab repositories is geplaatst. Bijvoorbeeld, de code kan worden opgeslagen in een GitHub repository, terwijl de CI/CD-pijplijn kan worden opgezet op basis van GitLab met GitLab CI/CD.

Vergelijking tussen Jenkins en GitLab CI/CD

Jenkins en GitLab CI/CD zijn beide uitstekende tools, elk in staat om een normale werking van de CI/CD-pijplijn te waarborgen. Maar bij een vergelijking blijkt dat, hoewel ze in veel opzichten op elkaar lijken, ze ook op bepaalde punten van elkaar verschillen.

Kenmerken
Jenkins
GitLab CI/CD

Open of gesloten code
Open code
Open code

Installatie
Vereist.
Dit is niet nodig, omdat het een ingebouwde functie van het GitLab-platform is.

Unieke kenmerken
Ondersteuning van plugins.
Diepe integratie in het versiebeheersysteem.

Ondersteuning
Niet beschikbaar.
Beschikbaar.

Installatie en configuratie
Geen problemen.
Geen problemen.

Zelfstandig implementeren van het systeem
Dit is de enige manier om het systeem te gebruiken.
Wordt ondersteund.

Creƫren van CI/CD-pijplijnen
Wordt ondersteund, gebruikt Jenkins Pipeline.
Wordt ondersteund.

Monitoring van applicatiewerkprestaties
Niet beschikbaar.
Beschikbaar.

Ecosysteem
Er zijn meer dan 1000 plugins beschikbaar.
Het systeem ontwikkelt zich binnen GitLab.

API
Ondersteunt een geavanceerd API-systeem.
Biedt API voor diepere integratie in projecten.

Ondersteuning voor JavaScript
Beschikbaar.
Beschikbaar.

Integratie met andere tools
Integratie met andere tools en platforms wordt ondersteund (Slack, GitHub).
Een breed scala aan integratietools voor externe systemen, met name met GitHub en Kubernetes.

Codekwaliteit controle
Wordt ondersteund — met behulp van de SonarQube-plugin en andere plugins.
Wordt ondersteund.

Verschillen tussen Jenkins en GitLab CI/CD

Laten we, na Jenkins en GitLab CI/CD te hebben beschreven en vergeleken, ons richten op de verschillen tussen deze DevOps-tools. Inzicht in deze verschillen helpt degenen die de voorkeur geven aan het ene hulpmiddel boven het andere.

  • GitLab CI/CD kan volledig controle uitoefenen over Git-repositories. Het gaat om het beheer van takken in repositories en enkele andere mogelijkheden. Jenkins kan wel werken met repositories, maar biedt niet hetzelfde niveau van controle als GitLab CI/CD.
  • Jenkins is een gratis open-source project. Degene die het kiest, implementeert het zelfstandig. GitLab CI/CD is daarentegen geĆÆntegreerd in het GitLab-platform, dit is een kant-en-klaar oplossing.
  • GitLab CI/CD ondersteunt geavanceerde taakbeheerfunctionaliteiten die op projectniveau opereren. Dit aspect van Jenkins is minder ontwikkeld.

Jenkins en GitLab CI/CD: sterkte en zwakte

Nu hebt u een idee gekregen van Jenkins en GitLab CI/CD. Laten we nu hun sterke en zwakke punten bekijken, zodat u beter bekend raakt met deze tools. We gaan ervan uit dat u al een beslissing heeft genomen over welk hulpmiddel u nodig heeft. We hopen dat deze sectie u helpt om uzelf te toetsen.

ā–Sterke punten van Jenkins

  • Een groot aantal plugins.
  • Volledige controle over de installatie van de tool.
  • Eenvoudige debugging van runners.
  • Eenvoudige configuratie van nodes.
  • Eenvoudige code-implementatie.
  • Een zeer goed systeem voor het beheer van referenties.
  • Flexibiliteit en veelzijdigheid.
  • Ondersteuning voor verschillende programmeertalen.
  • Het systeem is intuĆÆtief te begrijpen.

ā–Zwakke punten van Jenkins

  • Bij het gebruik van plugins kunnen er complicaties optreden.
  • Bij het gebruik van Jenkins in kleine projecten kunnen de benodigde tijdsinvesteringen voor de zelfconfiguratie onterecht hoog zijn.
  • Er ontbreekt algemene analysemogelijkheden voor CI/CD-ketens.

ā–Sterke punten van GitLab CI/CD

  • Goede integratie met Docker.
  • Eenvoudige schaalbaarheid van runners.
  • Gelijktijdige uitvoering van taken binnen de CI/CD-pijplijn.
  • Gebruik van een gerichte acyclische grafstructuur bij het instellen van de relaties tussen taken.
  • Hoge schaalbaarheid door gelijktijdige uitvoering van runners.
  • Gemakkelijk taken toevoegen.
  • Eenvoudige conflictoplossing.
  • Betrouwbaar beveiligingssysteem.

ā–Zwakke punten van GitLab CI/CD

  • Voor elke taak moeten artefacten worden beschreven en geüpload/geĆ«xporteerd.
  • Resultaten van branch samenvoegen kunnen niet worden getest voordat ze daadwerkelijk zijn samengevoegd.
  • Bij het beschrijven van stadia in de CI/CD-pijplijn kunnen momenteel geen afzonderlijke stappen worden onderscheiden.

Conclusies

Zowel Jenkins als GitLab CI/CD hebben hun sterke en zwakke punten. Het antwoord op de vraag welk systeem te kiezen, hangt af van de behoeften en kenmerken van het specifieke project. Elk van de besproken CI/CD-tools heeft zijn eigen kenmerken, hoewel ze zijn ontwikkeld om dezelfde taak op te lossen. Jenkins is een autonome tool, terwijl GitLab CI/CD een onderdeel is van een platform dat is ontworpen voor samenwerking aan code.

Bij het kiezen van een CI/CD-systeem is het belangrijk om niet alleen naar de mogelijkheden te kijken, maar ook naar de kosten die ermee gepaard kunnen gaan en met wat DevOps-engineers al gewend zijn te werken in de ondersteuning van het project.

Welke CI/CD-tools gebruiken jullie?

De strijd tussen Jenkins en GitLab CI/CD

De strijd tussen Jenkins en GitLab CI/CD

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster