In het afgelopen decennium is er aanzienlijke vooruitgang geboekt in de ontwikkeling van tools voor continue integratie (Continuous Integration, CI) en continue implementatie (Continuous Delivery, CD). De ontwikkeling van technologieën voor het integreren van softwareontwikkeling en -beheer (Development Operations, DevOps) heeft geleid tot een snelle toename van de vraag naar CI/CD-tools. Bestaande oplossingen worden voortdurend verbeterd, proberen bij de tijd te blijven, hun nieuwe versies worden uitgebracht, in de wereld van kwaliteitsborgingssoftware (Quality Assurance, QA) verschijnen er voortdurend veel nieuwe producten. Met zo'n overvloed aan keuze is het kiezen van het juiste gereedschap geen gemakkelijke taak.
Tussen alle bestaande CI/CD-tools zijn er twee projecten die zeker de aandacht waard zijn voor iemand die op dit gebied iets zoekt. We hebben het over Jenkins en de GitLab CI/CD-tool, die onderdeel is van het GitLab-platform. Jenkins heeft meer dan
Neem bijvoorbeeld de gegevens van het G2-platform, dat beoordelingen verzamelt van een grote verscheidenheid aan producten en de beoordelingen die gebruikers daaraan geven. Hier is de gemiddelde waardering
Als we het hebben over de populariteit van Jenkins in vergelijking met andere vergelijkbare platforms, merken we op dat we, nadat we een artikel hadden gepubliceerd waarin de Travis CI- en Jenkins-platforms werden vergeleken, een enquête hadden georganiseerd. Er hebben 85 gebruikers aan meegedaan. De respondenten werd gevraagd om de CI/CD-tool te kiezen die ze het leukst vinden. 79% koos voor Jenkins, 5% koos voor Travis CI en 16% gaf aan de voorkeur te geven aan andere tools.
Poll resultaten
Van andere CI/CD-tools werd GitLab CI/CD het vaakst genoemd.
Als u DevOps serieus neemt, moet u zorgvuldig de juiste tools selecteren, rekening houdend met de specifieke kenmerken van het project, het budget en andere vereisten. Om u te helpen de juiste keuze te maken, gaan we Jenkins en GitLab CI/CD beoordelen. Dit helpt je hopelijk om de juiste keuze te maken.
Inleiding tot Jenkins
De Jenkins-ontwikkelaars hebben een ander project gemaakt, Jenkins X, dat is ontworpen om in een Kubernetes-omgeving te werken. Jenkins X integreert Helm, Jenkins CI/CD Server, Kubernetes en andere tools om CI/CD-pijplijnen te bouwen die de best practices van DevOps volgen. Hier wordt bijvoorbeeld GitOps gebruikt.
Men kan aan de schat aan voordelen van Jenkins toevoegen dat de scripts zeer goed gestructureerd, begrijpelijk en gemakkelijk te lezen zijn. Het Jenkins-team heeft ongeveer 1000 plug-ins gemaakt die gericht zijn op het organiseren van de interactie van Jenkins met een breed scala aan technologieën. Scripts kunnen gebruik maken van authenticatiesystemen, waardoor je bijvoorbeeld verbinding kunt maken met verschillende gesloten systemen.
Tijdens de werking van de Jenkins-pijplijn kunt u zien wat er bij elke stap gebeurt, ongeacht of bepaalde werkfasen met succes zijn voltooid of niet. U kunt dit alles echter bekijken zonder een bepaalde grafische interface te gebruiken, maar met behulp van de mogelijkheden van de terminal.
Kenmerken van Jenkins
Tot de bekende kenmerken van Jenkins behoren het installatiegemak, een hoge mate van automatisering van verschillende bewerkingen en uitstekende documentatie. Als we het hebben over het oplossen van DevOps-taken, dan wordt Jenkins hier als een zeer betrouwbare tool beschouwd, waarmee het in de regel geen zin heeft om het hele proces van projectverwerking nauwlettend te volgen. Bij andere CI/CD-tools is dit niet het geval. Laten we het hebben over enkele van de belangrijkste kenmerken van Jenkins.
▍1. Gratis, open source, ondersteuning voor meerdere platforms
Jenkins kan draaien op macOS-, Windows- en Linux-platforms. Het kan ook functioneren in een Docker-omgeving, waardoor u een uniforme en snelle uitvoering van geautomatiseerde taken kunt organiseren. Deze tool kan ook worden uitgevoerd als een servlet in Java-compatibele containers zoals Apache Tomcat en GlassFish. Installatie van Jenkins kwalitatief
▍2. Ontwikkeld plug-in-ecosysteem
Het plug-in-ecosysteem van Jenkins lijkt veel volwassener dan de plug-in-ecosystemen van andere CI/CD-tools. Er zijn momenteel meer dan 1500 plug-ins voor Jenkins. Deze plug-ins zijn gericht op het oplossen van een breed scala aan taken, met hun hulp kunt u verschillende projecten automatiseren. De rijkdom aan gratis plug-ins om uit te kiezen betekent dat als je Jenkins gebruikt, je geen dure betaalde plug-ins hoeft te kopen. Er is een kans
▍3. Eenvoudige installatie en configuratie
Jenkins is vrij eenvoudig te installeren en configureren. Tegelijkertijd is het proces van het updaten van het systeem ook erg handig. Ook hier is het de moeite waard om de kwaliteit van de documentatie te vermelden, omdat u daarin antwoorden kunt vinden op verschillende vragen met betrekking tot het installeren en configureren van Jenkins.
▍4. Vriendelijke gemeenschap
Zoals eerder vermeld, is Jenkins een open source-project, waarvan het ecosysteem een groot aantal plug-ins bevat. Rondom Jenkins heeft zich een grote gemeenschap van gebruikers en ontwikkelaars ontwikkeld om het project te helpen ontwikkelen. De gemeenschap is een van de factoren die de ontwikkeling van Jenkins stimuleert.
▍5. Beschikbaarheid van REST-API
Tijdens het werken met Jenkins kunt u de REST API gebruiken, die de mogelijkheden van het systeem uitbreidt. API voor externe toegang tot het systeem wordt gepresenteerd in drie versies: XML, JSON met JSONP-ondersteuning, Python.
▍6. Ondersteuning voor parallelle uitvoering van taken
Jenkins ondersteunt parallellisatie van DevOps-taken. Het kan eenvoudig worden geïntegreerd met relevante tools en meldingen ontvangen over de resultaten van taken. Het testen van code kan worden versneld door een parallelle build van het project te organiseren met behulp van verschillende virtuele machines.
▍7. Ondersteuning voor werk in gedistribueerde omgevingen
Met Jenkins kunt u gedistribueerde builds organiseren met behulp van meerdere computers. Deze functie is toepasbaar in grote projecten en maakt gebruik van een werkschema, volgens welke er één master Jenkins-server en meerdere slave-machines is. Slavemachines kunnen ook worden gebruikt in situaties waarin het nodig is om het testen van een project in verschillende omgevingen te organiseren. Deze functies onderscheiden Jenkins van andere vergelijkbare projecten.
Inleiding tot GitLab
GitLab CI/CD werd oorspronkelijk uitgebracht als een op zichzelf staand project, maar in 2015 werd deze set tools geïntegreerd in GitLab 8.0. Een enkele GitLab CI/CD-server kan meer dan 25000 gebruikers ondersteunen. Op basis van dergelijke servers kunt u systemen maken die zeer beschikbaar zijn.
GitLab CI/CD en het belangrijkste GitLab-project zijn geschreven in Ruby en Go. Ze worden vrijgegeven onder de MIT-licentie. GitLab CI/CD ondersteunt naast de gebruikelijke functies van CI/CD-tools ook aanvullende functies met betrekking tot bijvoorbeeld werkplanning.
Het integreren van GitLab CI/CD in een project is heel eenvoudig. Bij gebruik van GitLab CI/CD is het verwerkingsproces van de projectcode verdeeld in fasen, die elk kunnen bestaan uit verschillende taken die in een bepaalde volgorde worden uitgevoerd. Taken kunnen worden afgestemd.
Taken kunnen parallel lopen. Nadat de volgorde van fasen en taken is ingesteld, is de CI/CD-pijplijn klaar voor gebruik. U kunt de voortgang volgen door de status van taken te volgen. Als gevolg hiervan is het gebruik van GitLab CI / CD erg handig, misschien handiger dan andere vergelijkbare tools.
Kenmerken van GitLab CI/CD en GitLab
GitLab CI/CD is een van de meest populaire DevOps-tools. Het project onderscheidt zich door hoogwaardige documentatie, de functies zijn eenvoudig en handig in gebruik. Als u nog niet bekend bent met GitLab CI/CD, geeft de volgende lijst met functies van deze tool u een algemeen idee van wat u ervan kunt verwachten. Opgemerkt moet worden dat veel van deze functies gerelateerd zijn aan het GitLab-platform zelf, waarin GitLab CI / CD is geïntegreerd.
▍1. Populariteit
GitLab CI/CD is een relatief nieuwe tool die op grote schaal wordt gebruikt. GitLab CI/CD is langzaamaan een enorm populaire CI/CD-tool geworden die wordt gebruikt voor geautomatiseerd testen en software-implementatie. Het is eenvoudig in te stellen. Het is ook een gratis CI/CD-tool ingebouwd in het GitLab-platform.
▍2. Ondersteuning voor GitLab Pages en Jekyll
Jekyll is een statische site-generator die binnen het GitLab Pages-systeem kan worden gebruikt om sites te maken op basis van GitLab-repositories. Het systeem neemt de bronmaterialen en genereert op basis daarvan een kant-en-klare statische site. U kunt het uiterlijk en de kenmerken van dergelijke sites bepalen door het bestand te bewerken _config.yml
, gebruikt door Jekyll.
▍3. Mogelijkheden voor projectplanning
Dankzij de mogelijkheid om de fasen van projecten te plannen, neemt het gemak van het volgen van problemen en hun groepen toe. Hiermee kunt u de organisatie van het werk aan projecten beheren en de uitvoering ervan op een specifieke datum plannen.
▍4. Automatische schaling van CI-lopers
Dankzij het automatisch schalen van runners die verantwoordelijk zijn voor het uitvoeren van specifieke taken, kun je flink besparen op de kosten van het huren van servercapaciteit. Dit is erg belangrijk, vooral als het gaat om omgevingen waar projecten parallel worden getest. Daarnaast is dit van belang bij grote projecten die uit meerdere repositories bestaan.
▍5. Trackingtools voor problemen
GitLab's krachtige probleemopsporingsmogelijkheden hebben ertoe geleid dat veel open source-projecten het platform hebben gebruikt. GitLab CI/CD maakt parallel testen van verschillende codetakken mogelijk. Testresultaten worden handig geanalyseerd in de systeeminterface. Dit onderscheidt GitLab CI/CD van Jenkins.
▍6. Toegang tot opslagplaatsen beperken
Het GitLab-platform ondersteunt het beperken van de toegang tot repositories. Degenen die bijvoorbeeld samenwerken aan een project in een repository kunnen machtigingen krijgen die passen bij hun rol. Dit geldt met name voor bedrijfsprojecten.
▍7. Actieve ondersteuning door de gemeenschap
Rondom GitLab heeft zich een actieve community ontwikkeld, die bijdraagt aan de ontwikkeling van dit platform en zijn tools, in het bijzonder GitLab CI/CD. Diepe integratie van onder andere GitLab CI/CD en GitLab maakt het gemakkelijk om antwoorden te vinden op vragen die opkomen bij het werken met GitLab CI/CD.
▍8. Ondersteuning voor verschillende versiebeheersystemen
GitLab CI/CD is een systeem dat met meer kan werken dan alleen code die wordt gehost in GitLab-repository's. Zo kan de code worden opgeslagen in een GitHub-repository en kan de CI/CD-pijplijn worden ingericht op basis van GitLab met behulp van GitLab CI/CD.
Vergelijking van Jenkins en GitLab CI/CD
Jenkins en GitLab CI/CD zijn zeer goede tools, die beide in staat zijn om de CI/CD-pijplijn soepel te laten verlopen. Maar als je ze vergelijkt, blijkt dat ze, hoewel ze in veel opzichten op elkaar lijken, in sommige opzichten van elkaar verschillen.
Kenschetsing
Jenkins
GitLab CI / CD
Open source of gesloten source
од
од
installatie
Verplicht.
Niet vereist omdat dit een ingebouwde functie is van het GitLab-platform.
Unieke kenmerken
Ondersteuning voor plug-ins.
Diepe integratie in versiebeheersysteem.
Ondersteunen
Ontbreekt.
Verkrijgbaar.
Installatie en configuratie
Moeilijkheden veroorzaken niet
Moeilijkheden veroorzaken niet
Zelfontplooiing van het systeem
Dit is de enige manier om het systeem te gebruiken.
Ondersteund.
CI/CD-pijplijnen maken
Ondersteund, met behulp van Jenkins Pipeline.
Ondersteund.
Monitoring van applicatieprestaties
Ontbreekt.
Verkrijgbaar.
Ecosysteem
Er zijn meer dan 1000 plug-ins.
Het systeem wordt ontwikkeld binnen GitLab.
API
Ondersteunt een geavanceerd API-systeem.
Biedt een API voor diepere integratie in projecten.
JavaScript-ondersteuning
Verkrijgbaar.
Verkrijgbaar.
Integratie met andere tools
Integratie met andere tools en platforms wordt ondersteund (Slack, GitHub).
Veel tools voor integratie met systemen van derden, in het bijzonder - met GitHub en Kubernetes.
Code kwaliteitscontrole
Ondersteund - met behulp van de SonarQube-plug-in en andere plug-ins.
Ondersteund.
Verschillen tussen Jenkins en GitLab CI/CD
Nadat we Jenkins en GitLab CI/CD hebben beschreven en vergeleken, gaan we ons concentreren op de verschillen tussen deze DevOps-tools. Als u deze verschillen kent, kunt u degenen begrijpen die de voorkeur geven aan een van deze tools boven de andere.
- GitLab CI/CD kan Git-repository's volledig beheren. We hebben het over het beheren van repository-takken en enkele andere functies. Maar Jenkins, hoewel het met repositories kan werken, geeft er niet hetzelfde niveau van controle over als GitLab CI / CD.
- Jenkins is een gratis open source-project. Degene die ervoor kiest, zet het zelfstandig in. En GitLab CI/CD is opgenomen in het GitLab platform, dit is een turnkey oplossing.
- GitLab CI/CD ondersteunt geavanceerde tools voor taakbeheer die op projectniveau werken. Deze kant van Jenkins is minder ontwikkeld.
Jenkins en GitLab CI/CD: sterke en zwakke punten
Nu heb je een idee over Jenkins en GitLab CI/CD. Laten we, om u nog beter vertrouwd te maken met deze tools, eens kijken naar hun sterke en zwakke punten. We gaan ervan uit dat je al hebt besloten welke tool je nodig hebt. Hopelijk stelt dit gedeelte je in staat om jezelf te testen.
▍Sterke punten van Jenkins
- Een groot aantal plug-ins.
- Volledige controle over de installatie van het gereedschap.
- Eenvoudig debuggen van hardlopers.
- Eenvoudige installatie van knooppunten.
- Eenvoudige code-implementatie.
- Zeer goed referentiebeheersysteem.
- Flexibiliteit en veelzijdigheid.
- Ondersteuning voor verschillende programmeertalen.
- Het systeem is begrijpelijk op een intuïtief niveau.
▍Zwakke punten van Jenkins
- Plug-ins kunnen lastig te gebruiken zijn.
- Bij het gebruik van Jenkins in kleine projecten kan de tijd die nodig is om het zelf te configureren onredelijk groot zijn.
- Gebrek aan algemene analytische informatie over CI/CD-ketens.
▍Sterke punten van GitLab CI/CD
- Goede integratie met Docker.
- Eenvoudig schalen van hardlopers.
- Parallelle uitvoering van taken die deel uitmaken van de stadia van de CI/CD-pijplijn.
- Het gerichte acyclische graafmodel gebruiken bij het opzetten van taakrelaties.
- Hoge mate van schaalbaarheid door de mogelijkheid van parallelle uitvoering van runners.
- Eenvoudig taken toevoegen.
- Eenvoudige conflictoplossing.
- Betrouwbaar beveiligingssysteem.
▍Zwakke punten van GitLab CI/CD
- Voor elke taak moet u artefacten beschrijven en uploaden/downloaden.
- U kunt de resultaten van het samenvoegen van branches niet testen voordat ze daadwerkelijk zijn samengevoegd.
- Bij het beschrijven van de stadia van de CI/CD-pijplijn is het nog niet mogelijk om individuele stadia daarin te onderscheiden.
Resultaten van
Zowel Jenkins als GitLab CI/CD hebben sterke en zwakke punten. Het antwoord op de vraag wat te kiezen hangt af van de behoeften en kenmerken van een bepaald project. Elk van de vandaag besproken CI/CD-tools heeft bepaalde functies, hoewel deze tools zijn gemaakt om hetzelfde probleem op te lossen. Tegelijkertijd is Jenkins een op zichzelf staande tool en maakt GitLab CI / CD deel uit van een platform dat is ontworpen om samen aan code te werken.
Bij het kiezen van een CI / CD-systeem is het, naast de mogelijkheden ervan, de moeite waard om rekening te houden met de kosten die eraan kunnen zijn verbonden, en met wat DevOps-engineers die het project ondersteunen precies gewend zijn te werken.
Welke CI/CD-tools gebruikt u?
Bron: www.habr.com