In den letzten zehn Jahren wurden erhebliche Fortschritte in der Entwicklung von Werkzeugen für Continuous Integration (CI) und Continuous Delivery (CD) erzielt. Die Entwicklung von Technologien zur Integration von Softwareentwicklung und -betrieb (DevOps) hat zu einer rasanten Nachfrage nach CI/CD-Werkzeugen geführt. Bestehende Lösungen werden kontinuierlich verbessert, um mit den neuesten Entwicklungen Schritt zu halten, und es erscheinen ständig neue Versionen. In der Welt der Qualitätssicherung (Quality Assurance, QA) gibt es eine Vielzahl neuer Produkte. Angesichts dieser Fülle an Auswahl kann es eine Herausforderung sein, die passenden Werkzeuge auszuwählen.
Unter allen vorhandenen CI/CD-Werkzeugen gibt es zwei Projekte, die definitiv Beachtung verdienen, wenn man nach Lösungen in diesem Bereich sucht. Es handelt sich um Jenkins und das GitLab CI/CD-Tool, das Teil der GitLab-Plattform ist. Jenkins hat mehr als Sterne auf GitHub. Das Repository von GitLab auf gitlab.com hat etwas mehr als Sternen. Wenn man die Popularität der Repositories vergleicht, zeigt sich, dass Jenkins achtmal mehr Sterne gesammelt hat als die Plattform, die GitLab CI/CD umfasst. Allerdings ist das bei der Auswahl eines CI/CD-Tools bei weitem nicht der einzige Faktor, auf den man achten sollte. Es gibt viele weitere Aspekte, was erklärt, warum Jenkins und GitLab CI/CD in vielen Vergleichen sehr eng beieinander liegen.
Nehmen wir zum Beispiel die Daten von der Plattform G2, die Bewertungen zu den unterschiedlichsten Produkten und die Bewertungen, die die Nutzer abgeben, sammelt. Hier liegt die Durchschnittsbewertung , basierend auf 288 Bewertungen, bei 4,3 Sternen. Bei gibt es 270 Bewertungen, die Durchschnittsbewertung dieses Tools liegt bei 4,4 Sternen. Wir machen keinen Fehler, wenn wir sagen, dass Jenkins und GitLab CI/CD in einem direkten Wettbewerb miteinander stehen. Interessanterweise wurde das Jenkins-Projekt im Jahr 2011 ins Leben gerufen und ist seitdem das bevorzugte Werkzeug für Tester. Das GitLab CI/CD-Projekt, das 2014 gestartet wurde, hat jedoch aufgrund der fortschrittlichen Funktionen, die diese Plattform bietet, ebenfalls hohe Positionen erreicht.
Wenn wir die Popularität von Jenkins im Vergleich zu anderen ähnlichen Plattformen betrachten, sollten wir hervorheben, dass wir einen Umfrage durchgeführt haben, nachdem wir einen Artikel veröffentlicht haben, in dem die Plattformen Travis CI und Jenkins verglichen wurden. An dieser Umfrage nahmen 85 Benutzer teil. Den Befragten wurde angeboten, das CI/CD-Tool zu wählen, das ihnen am besten gefällt. 79 % entschieden sich für Jenkins, 5 % für Travis CI und 16 % gaben an, dass sie andere Tools bevorzugen.

Ergebnisse der Umfrage
Unter den anderen CI/CD-Tools wurde GitLab CI/CD am häufigsten erwähnt.
Wenn Sie ernsthaft im Bereich DevOps tätig sind, müssen Sie die entsprechenden Tools sorgfältig auswählen, wobei Sie die Besonderheiten des Projekts, das Budget und andere Anforderungen berücksichtigen. Um Ihnen bei der richtigen Entscheidung zu helfen, planen wir eine Analyse von Jenkins und GitLab CI/CD. Wir hoffen, dass dies Ihnen bei der Wahl hilft.
Einführung in Jenkins

Jenkins ist ein weithin bekannter, flexibler CI/CD-Tool, das zur Automatisierung zahlreicher Aufgaben im Zusammenhang mit Softwareprojekten entwickelt wurde. Jenkins ist vollständig in Java geschrieben und wird unter der MIT-Lizenz veröffentlicht. Es bietet eine leistungsstarke Suite von Funktionen, die darauf abzielen, Aufgaben im Zusammenhang mit dem Bauen, Testen, Bereitstellen, Integrieren und Veröffentlichen von Software zu automatisieren. Dieses Tool kann auf verschiedenen Betriebssystemen eingesetzt werden, einschließlich macOS, Windows und zahlreicher Linux-Distributionen wie OpenSUSE, Ubuntu und Red Hat. Es gibt Installationspakete für Jenkins, die für verschiedene OS geeignet sind, und das Tool kann in Docker sowie auf jedem System mit einer JRE (Java Runtime Environment) installiert werden.
Die Entwickler von Jenkins haben ein weiteres Projekt ins Leben gerufen, Jenkins X, das für den Einsatz in Kubernetes-Umgebungen optimiert ist. Jenkins X integriert Helm, den Jenkins CI/CD-Server, Kubernetes und andere Werkzeuge zur Erstellung von CI/CD-Pipelines, die den Best Practices von DevOps entsprechen. Hierbei wird beispielsweise GitOps verwendet.
Ein weiterer Vorteil von Jenkins ist die hervorragende Strukturierung und Lesbarkeit seiner Skripte. Die Jenkins-Community hat etwa 1000 Plugins entwickelt, die dazu dienen, die Interaktion von Jenkins mit verschiedenen Technologien zu organisieren. In den Skripten können Authentifizierungssysteme genutzt werden, was beispielsweise den Zugang zu verschiedenen geschlossenen Systemen ermöglicht.
Während der Ausführung einer Jenkins-Pipeline kann man genau verfolgen, was in jedem Schritt passiert und ob die einzelnen Phasen erfolgreich abgeschlossen wurden oder nicht. Dies ist jedoch nicht über eine grafische Benutzeroberfläche möglich, sondern erfordert die Nutzung von Terminalfunktionen.
Merkmale von Jenkins
Zu den bekanntesten Eigenschaften von Jenkins gehören die einfache Einrichtung, ein hohes Maß an Automatisierung verschiedener Abläufe und die hervorragende Dokumentation. Im Bereich der DevOps-Aufgaben gilt Jenkins als ein sehr zuverlässiges Tool, bei dessen Nutzung in der Regel kein intensives Monitoring des gesamten Projektverarbeitungsprozesses erforderlich ist. Dies ist bei anderen CI/CD-Tools nicht der Fall. Lassen Sie uns über einige der wichtigsten Funktionen von Jenkins sprechen.
▍1. Kostenfrei, Open Source, Unterstützung für zahlreiche Plattformen
Jenkins kann auf macOS, Windows und Linux betrieben werden. Es kann auch in einer Docker-Umgebung eingesetzt werden, was eine einheitliche und schnelle Ausführung automatisierter Aufgaben ermöglicht. Darüber hinaus kann dieses Tool als Servlet in Containern, die Java unterstützen, wie Apache Tomcat und GlassFish, betrieben werden. Die Installation von Jenkins ist gut dokumentiert. .
▍2. Umfangreiches Plugin-Ökosystem
Das Jenkins-Plugin-Ökosystem ist weitentwickelter als die Ökosysteme anderer CI/CD-Tools. Derzeit gibt es über 1500 Plugins für Jenkins. Diese Plugins helfen, eine Vielzahl von Aufgaben zu lösen und ermöglichen es, unterschiedlichste Projekte zu automatisieren. Die große Auswahl an kostenlosen Plugins bedeutet, dass Benutzer von Jenkins keine dringende Notwendigkeit haben, teure kostenpflichtige Plugins zu erwerben. Es gibt Möglichkeiten Jenkins mit vielen DevOps-Tools.
▍3. Einfache Installation und Konfiguration
Jenkins lässt sich ziemlich einfach installieren und konfigurieren. Auch der Aktualisierungsprozess des Systems ist sehr benutzerfreundlich. Hierbei sollte man wieder die Qualität der Dokumentation erwähnen, in der Antworten auf viele Fragen zu Installation und Konfiguration von Jenkins zu finden sind.
▍4. Freundliche Community
Wie bereits erwähnt, ist Jenkins ein Open-Source-Projekt, dessen Ökosystem eine Vielzahl von Plugins umfasst. Rund um Jenkins hat sich eine große Gemeinschaft von Nutzern und Entwicklern gebildet, die zur Weiterentwicklung des Projekts beiträgt. Die Gemeinschaft ist ein entscheidender Faktor für das Wachstum von Jenkins.
▍5. Verfügbarkeit von REST API
Bei der Arbeit mit Jenkins können Sie die REST API nutzen, die die Möglichkeiten des Systems erweitert. Die API für den Fernzugriff auf das System wird in drei Varianten bereitgestellt: XML, JSON mit Unterstützung für JSONP, Python. Dokumentationsseite, die Details zur Nutzung der REST API von Jenkins enthält.
▍6. Unterstützung für parallele Ausführung von Aufgaben
Jenkins unterstützt die Parallelisierung von DevOps-Aufgaben. Er lässt sich einfach mit den entsprechenden Tools integrieren und sendet Benachrichtigungen über die Ergebnisse der Aufgabenausführung. Das Testen von Code kann durch die Organisation von parallelen Builds des Projekts auf verschiedenen virtuellen Maschinen beschleunigt werden.
▍7. Unterstützung für den Betrieb in verteilten Umgebungen
Jenkins ermöglicht die Organisation von verteilten Builds unter Verwendung mehrerer Computer. Diese Funktion ist insbesondere für große Projekte relevant und basiert auf einem Modell, bei dem ein Hauptserver von Jenkins und mehrere untergeordnete Maschinen vorhanden sind. Diese untergeordneten Maschinen können auch in Situationen eingesetzt werden, in denen Tests in unterschiedlichen Umgebungen durchgeführt werden müssen. Diese Eigenschaften heben Jenkins vorteilhaft von anderen ähnlichen Projekten ab.
Einführung in GitLab

kann als eines der neuesten und beliebtesten Werkzeuge unter DevOps-Ingenieuren bezeichnet werden. Dieses kostenlose Open-Source-Tool ist in das Versionsverwaltungssystem GitLab integriert. Die GitLab-Plattform bietet eine Community-Version, die Repository-Verwaltung, Issue-Tracking, Code-Review-Organisation und dokumentationsorientierte Mechanismen unterstützt. Unternehmen können GitLab lokal installieren und dieses System mit Active Directory sowie LDAP-Servern verbinden, um eine sichere Benutzerautorisierung und -authentifizierung zu ermöglichen.
Ein Video-Tutorial, das Ihnen hilft, CI/CD-Pipelines mit den Funktionen von GitLab CI/CD zu erstellen.
Ursprünglich wurde GitLab CI/CD als eigenständiges Projekt veröffentlicht, aber 2015 wurde dieses Toolset in GitLab 8.0 integriert. Ein separater GitLab CI/CD-Server kann über 25.000 Benutzer unterstützen. Auf der Grundlage solcher Server können hochverfügbare Systeme erstellt werden.
GitLab CI/CD sowie das Hauptprojekt GitLab sind in Ruby und Go geschrieben. Sie sind unter der MIT-Lizenz veröffentlicht. Neben den Standardfunktionen von CI/CD-Tools bietet GitLab CI/CD auch zusätzliche Funktionen, wie beispielsweise das Planen von Aufgaben.
Die Integration von GitLab CI/CD in ein Projekt ist sehr einfach. Mit GitLab CI/CD wird der Codeverarbeitungsprozess in Phasen unterteilt, von denen jede aus mehreren Aufgaben bestehen kann, die in einer bestimmten Reihenfolge ausgeführt werden. Die Aufgaben können feinjustiert werden.
Aufgaben können parallel ausgeführt werden. Nach der Konfiguration der Reihenfolge von Phasen und Aufgaben ist die CI/CD-Pipeline bereit für den Einsatz. Der Fortschritt kann verfolgt werden, indem der Status der Aufgaben beobachtet wird. Das Arbeiten mit GitLab CI/CD ist durchweg komfortabel und möglicherweise einfacher als mit anderen ähnlichen Tools.
Besonderheiten von GitLab CI/CD und GitLab
GitLab CI/CD ist eines der beliebtesten DevOps-Tools. Das Projekt zeichnet sich durch eine hochwertige Dokumentation aus und lässt sich leicht und komfortabel verwenden. Wenn Sie mit GitLab CI/CD noch nicht vertraut sind, wird Ihnen die folgende Liste von Funktionen dieses Tools einen umfassenden Überblick darüber geben, was Sie erwarten können. Es ist anzumerken, dass viele dieser Funktionen eng mit der GitLab-Plattform verbunden sind, in die GitLab CI/CD integriert ist.
▍1. Beliebtheit
GitLab CI/CD ist ein vergleichsweise neues Tool, das weit verbreitet ist. Es hat sich allmählich zu einem äußerst populären CI/CD-Tool entwickelt, das für automatisiertes Testen und den Einsatz von Software verwendet wird. Es ist einfach einzurichten und zudem ein kostenloses CI/CD-Tool, das in die GitLab-Plattform integriert ist.
▍2. Unterstützung von GitLab Pages und Jekyll
Jekyll ist ein Generator für statische Websites, der im Rahmen des Systems GitLab Pages verwendet werden kann, um Websites auf der Grundlage von GitLab-Repositorys zu erstellen. Das System nutzt die Ausgangsmaterialien und generiert daraus eine fertige statische Website. Das Aussehen und die Funktionen solcher Websites können durch Bearbeiten der Datei _config.yml, die von Jekyll verwendet wird, verwaltet werden.
▍3. Projektplanungsmöglichkeiten
Dank der Möglichkeit, Projektphasen zu planen, wird das Tracking von Problemen und deren Gruppierung erleichtert. Dies ermöglicht eine organisierte Durchführung von Projektarbeiten und die Planung ihrer Fertigstellung zu einem bestimmten Datum.
▍4. Automatische Skalierung der CI-Runner
Durch die automatische Skalierung der Runner, die für die Ausführung spezifischer Aufgaben zuständig sind, können erheblich Kosten für die Anmietung von Serverressourcen gespart werden. Dies ist besonders wichtig, wenn es um Umgebungen geht, in denen Projekttests parallel durchgeführt werden. Zudem ist dies für große Projekte von Bedeutung, die aus mehreren Repositories bestehen.
▍5. Tools zur Problemerkennung
Die leistungsstarken Funktionen von GitLab zur Probleverfolgung haben dazu geführt, dass viele Open-Source-Projekte diese Plattform nutzen. GitLab CI/CD ermöglicht paralleles Testen verschiedener Code-Zweige. Die Testergebnisse lassen sich bequem im Systeminterface analysieren. Das hebt GitLab CI/CD vorteilhaft von Jenkins ab.
▍6. Zugriffsbeschränkung auf Repositories
Die GitLab-Plattform unterstützt die Einschränkung des Zugriffs auf Repositories. Beispielsweise können denjenigen, die gemeinsam an einem Projekt in einem bestimmten Repository arbeiten, Berechtigungen zugewiesen werden, die ihren Rollen entsprechen. Dies ist besonders relevant für Unternehmensprojekte.
▍7. Aktive Unterstützung der Community
Um GitLab hat sich eine aktive Community gebildet, die zur Weiterentwicklung dieser Plattform und ihrer Werkzeuge, insbesondere GitLab CI/CD, beiträgt. Die tiefe Integration von GitLab CI/CD und GitLab erleichtert unter anderem das Finden von Antworten auf Fragen, die bei der Arbeit mit GitLab CI/CD auftreten.
▍8. Unterstützung für verschiedene Versionskontrollsysteme
GitLab CI/CD ist ein System, das nicht nur mit Code arbeiten kann, der in GitLab-Repositories gehostet wird. Beispielsweise kann der Code in einem GitHub-Repository gespeichert und die CI/CD-Pipeline auf der Basis von GitLab unter Verwendung von GitLab CI/CD organisiert werden.
Vergleich Jenkins und GitLab CI/CD
Jenkins und GitLab CI/CD sind ausgezeichnete Werkzeuge, die beide eine zuverlässige Funktionalität für CI/CD-Pipelines ermöglichen. Ein Vergleich zeigt jedoch, dass sie trotz ähnlicher Funktionen in bestimmten Aspekten Unterschiede aufweisen.
Merkmale
Jenkins
GitLab CI/CD
Offener oder geschlossener Code
Open Source
Open Source
Installation von
Erforderlich.
Nicht erforderlich, da dies eine integrierte Funktion der GitLab-Plattform ist.
Einzigartige Merkmale
Plugin-Unterstützung.
Tiefe Integration in das Versionskontrollsystem.
Support
Nicht vorhanden.
Vorhanden.
Installation und Konfiguration
Verursacht keine Schwierigkeiten
Verursacht keine Schwierigkeiten
Eigenständige Bereitstellung des Systems
Dies ist die einzige Möglichkeit, das System zu nutzen.
Wird unterstützt.
Erstellung von CI/CD-Pipelines
Wird unterstützt, nutzt Jenkins Pipeline.
Wird unterstützt.
Überwachung der Anwendungsleistung
Nicht vorhanden.
Vorhanden.
Ökosystem
Es gibt über 1000 Plugins.
Das System entwickelt sich innerhalb von GitLab weiter.
API
Unterstützt ein umfassendes API-System.
Bietet APIs für tiefere Integrationen in Projekte.
Unterstützung für JavaScript
Vorhanden.
Vorhanden.
Integration mit anderen Werkzeugen
Integration mit anderen Tools und Plattformen (Slack, GitHub) wird unterstützt.
Vielfältige Integrationsmöglichkeiten mit Drittanbietersystemen, insbesondere mit GitHub und Kubernetes.
Codequalitätssicherung
Unterstützt durch das SonarQube-Plugin und andere Plugins.
Wird unterstützt.
Unterschiede zwischen Jenkins und GitLab CI/CD
Nachdem wir Jenkins und GitLab CI/CD beschrieben und verglichen haben, konzentrieren wir uns auf die Unterschiede dieser DevOps-Tools. Das Wissen über diese Unterschiede ermöglicht es, die Präferenzen zwischen den beiden Tools besser zu verstehen.
- GitLab CI/CD kann Git-Repositories vollständig verwalten. Es geht um die Verwaltung von Repository-Branches und einige andere Funktionen. Jenkins hingegen, obwohl es mit Repositories arbeiten kann, bietet nicht den gleichen Kontrollgrad wie GitLab CI/CD.
- Jenkins ist ein kostenloses Open-Source-Projekt. Wer sich dafür entscheidet, muss es selbstständig aufsetzen. GitLab CI/CD hingegen ist Teil der GitLab-Plattform und bietet eine schlüsselfertige Lösung.
- GitLab CI/CD unterstützt fortschrittliche Aufgabenverwaltungsinstrumente auf Projektebene. Diese Funktionalität ist in Jenkins weniger ausgeprägt.
Jenkins und GitLab CI/CD: Stärken und Schwächen
Jetzt haben Sie einen ersten Eindruck von Jenkins und GitLab CI/CD gewonnen. Um Ihnen ein besseres Verständnis für diese Tools zu vermitteln, lassen Sie uns ihre Stärken und Schwächen genauer betrachten. Wir nehmen an, dass Sie bereits entschieden haben, welches Tool Sie benötigen. Wir hoffen, dass Ihnen dieser Abschnitt hilft, Ihre Wahl zu überprüfen.
▍Stärken von Jenkins
- Eine große Anzahl an Plugins.
- Vollständige Kontrolle über die Installation des Tools.
- Einfache Fehlersuche bei Runnern.
- Einfache Konfiguration von Knoten.
- Einfaches Deployment von Code.
- Sehr gutes Credentials-Management.
- Flexibilität und Anpassungsfähigkeit.
- Unterstützung verschiedener Programmiersprachen.
- System ist intuitiv verständlich.
▍Schwächen von Jenkins
- Es kann zu Problemen bei der Verwendung von Plugins kommen.
- Bei kleinen Projekten kann der Zeitaufwand für die Eigenkonfiguration von Jenkins unverhältnismäßig hoch sein.
- Fehlende allgemeine Analysen zu CI/CD-Pipelines.
▍Stärken von GitLab CI/CD
- Gute Integration mit Docker.
- Einfache Skalierung der Runner.
- Parallelverarbeitung von Aufgaben innerhalb der Phasen des CI/CD-Pipelines.
- Nutzung eines gerichteten azyklischen Graphen zur Konfiguration von Aufgabenbeziehungen.
- Hohe Skalierbarkeit durch die Möglichkeit zur parallelen Ausführung von Runnern.
- Einfache Hinzufügung von Aufgaben.
- Einfache Konfliktlösung.
- Zuverlässiges Sicherheitssystem.
▍Schwächen von GitLab CI/CD
- Für jede Aufgabe müssen Artefakte beschrieben und hochgeladen/heruntergeladen werden.
- Die Ergebnisse der Zusammenführung von Branches können nicht getestet werden, bevor sie tatsächlich zusammengeführt werden.
- Bei der Beschreibung der CI/CD-Pipeline-Phasen können momentan keine separaten Schritte hervorgehoben werden.
Ergebnisse
Sowohl Jenkins als auch GitLab CI/CD haben ihre Stärken und Schwächen. Die Entscheidung, welches Tool zu wählen ist, hängt von den Bedürfnissen und Besonderheiten des jeweiligen Projekts ab. Jedes der heute betrachteten CI/CD-Tools weist spezifische Merkmale auf, obwohl sie alle zur Lösung derselben Aufgabe entwickelt wurden. Dabei ist Jenkins ein eigenständiges Tool, während GitLab CI/CD Teil einer Plattform zur Zusammenarbeit am Code ist.
Wenn Sie ein CI/CD-System auswählen, sollten Sie neben den Funktionen auch die Kosten berücksichtigen, die damit verbunden sein könnten, sowie die passenden Tools, mit denen DevOps-Engineers vertraut sind und die das Projekt unterstützen.
Welche CI/CD-Tools verwenden Sie?
Quelle: habr.com
