Slag bij Jenkins en GitLab CI/CD

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.

Slag bij Jenkins en GitLab CI/CD

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 16000 sterren op GitHub. De GitLab-repository op gitlab.com scoorde iets meer 2000 sterren. Als we de populariteit van de repositories vergelijken, blijkt dat Jenkins 8 keer meer sterren scoorde dan het platform, waar GitLab CI/CD onder valt. Maar bij het kiezen van een CI / CD-tool is dit verre van de enige indicator waar u op moet letten. Er zijn er nog veel meer, en dit verklaart waarom Jenkins en GitLab CI / CD in veel vergelijkingen erg dicht bij elkaar liggen.

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 Jenkins, gebaseerd op 288 beoordelingen, is 4,3 sterren. Oh Oh GitLab er zijn 270 beoordelingen, de gemiddelde beoordeling voor deze tool is 4,4 sterren. We zullen ons niet vergissen als we zeggen dat Jenkins en GitLab CI / CD op gelijke voet met elkaar concurreren. Het is interessant om op te merken dat het Jenkins-project in 2011 verscheen en sindsdien een favoriete tool is voor testers. Maar tegelijkertijd heeft het GitLab CI / CD-project, gelanceerd in 2014, zijn zeer hoge positie ingenomen dankzij de geavanceerde functies die dit platform biedt.

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.

Slag bij Jenkins en GitLab CI/CD
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

Slag bij Jenkins en GitLab CI/CD
Jenkins is een bekende, flexibele CI/CD-tool die is ontworpen om veel taken met betrekking tot softwareprojecten te automatiseren. Jenkins is volledig in Java geschreven en vrijgegeven onder de MIT-licentie. Het heeft een krachtige set functies die gericht zijn op het automatiseren van de taken die verband houden met het bouwen, testen, implementeren, integreren en vrijgeven van software. Deze tool kan op verschillende besturingssystemen worden gebruikt. Deze omvatten macOS, Windows en veel Linux-distributies zoals OpenSUSE, Ubuntu en Red Hat. Er zijn installatiepakketten voor Jenkins ontworpen voor verschillende besturingssystemen, deze tool kan worden geïnstalleerd op Docker en op elk systeem met een JRE (Java Runtime Environment).

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 gedocumenteerd.

▍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 integratie Jenkins met veel DevOps-tools.

▍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. Hier Documentatiepagina met details over het werken met de Jenkins REST API.

▍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

Slag bij Jenkins en GitLab CI/CD
GitLab CI / CD kan een van de nieuwste en meest geliefde DevOps-tools worden genoemd. Deze gratis open source tool is ingebouwd in het versiebeheersysteem van GitLab. Het GitLab-platform heeft een communityversie, het ondersteunt repositorybeheer, tools voor het volgen van problemen, de organisatie van codereviews en op documentatie gerichte mechanismen. Bedrijven kunnen GitLab lokaal installeren en koppelen aan Active Directory en LDAP-servers voor veilige gebruikersautorisatie en authenticatie.

Hier Een videozelfstudie om u te helpen leren hoe u CI/CD-pijplijnen kunt maken met behulp van GitLab CI/CD-mogelijkheden.

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?

Slag bij Jenkins en GitLab CI/CD

Slag bij Jenkins en GitLab CI/CD

Bron: www.habr.com

Voeg een reactie