Schlacht von Jenkins und GitLab CI / CD

In den letzten zehn Jahren wurden erhebliche Fortschritte bei der Entwicklung von Tools für Continuous Integration (CI) und Continuous Delivery (CD) erzielt. Die Entwicklung von Technologien zur Integration von Softwareentwicklung und -betrieb (Development Operations, DevOps) hat zu einem raschen Anstieg der Nachfrage nach CI / CD-Tools geführt. Bestehende Lösungen werden ständig verbessert und bemühen sich, mit der Zeit Schritt zu halten. Ihre neuen Versionen werden veröffentlicht. In der Welt der Software-Qualitätssicherung (Qualitätssicherung, Qualitätssicherung) erscheinen ständig viele neue Produkte. Bei einer solchen Auswahl ist die Auswahl der richtigen Toolbox keine leichte Aufgabe.







Unter allen vorhandenen CI / CD-Tools gibt es zwei Projekte, die es definitiv wert sind, beachtet zu werden, wenn Sie nach etwas aus diesem Bereich suchen. Wir sprechen über Jenkins und das GitLab CI / CD-Tool, das Teil der GitLab-Plattform ist. Jenkins hat über 16.000 Sterne auf GitHub. Das GitLab-Repository auf gitlab.com hat etwas mehr als 2.000 Sterne. Wenn wir die Popularität von Repositories vergleichen, stellt sich heraus, dass Jenkins achtmal mehr Sterne erzielt hat als die Plattform, zu der auch GitLab CI / CD gehört. Bei der Auswahl eines CI / CD-Tools ist dies jedoch bei weitem nicht der einzige Indikator, auf den Sie achten sollten. Es gibt Unmengen anderer, und dies erklärt, warum Jenkins und GitLab CI / CD in vielen Vergleichen sehr nahe beieinander liegen.



Nehmen Sie zum Beispiel Daten von der G2-Plattform, die Bewertungen zu einer Vielzahl von Produkten und Bewertungen sammelt, die Benutzer ihnen geben. Hier hat Jenkins eine durchschnittliche Bewertung von 4,3 Sternen basierend auf 288 Bewertungen. Und über GitLab hier hat 270 Bewertungen, die durchschnittliche Bewertung dieses Instruments beträgt 4,4 Sterne. Wir werden uns nicht irren, wenn wir behaupten, dass Jenkins und GitLab CI / CD zu gleichen Bedingungen miteinander konkurrieren. Es ist interessant festzustellen, dass das Jenkins-Projekt 2011 erschien und seitdem ein beliebtes Werkzeug von Testern ist. Gleichzeitig nahm das 2014 gestartete GitLab CI / CD-Projekt dank der erweiterten Funktionen dieser Plattform eine sehr hohe Position ein.



Wenn wir über die Popularität von Jenkins im Vergleich zu anderen ähnlichen Plattformen sprechen, stellen wir fest, dass wir, nachdem wir einen Artikel veröffentlicht haben, in dem die Plattformen Travis CI und Jenkins verglichen wurden, eine Umfrage durchgeführt haben. 85 Benutzer haben daran teilgenommen. Die Befragten wurden gebeten, das CI / CD-Tool auszuwählen, das ihnen am besten gefällt. 79% entschieden sich für Jenkins, 5% für Travis CI und 16% gaben an, andere Tools zu bevorzugen.





Umfrageergebnisse



Unter anderen CI / CD-Tools wurde GitLab CI / CD am häufigsten erwähnt.



Wenn Sie DevOps ernst nehmen, müssen Sie die geeigneten Tools sorgfältig auswählen und dabei die Besonderheiten des Projekts, sein Budget und andere Anforderungen berücksichtigen. Um Ihnen zu helfen, die richtige Wahl zu treffen, werden wir Jenkins und GitLab CI / CD analysieren. Dies wird Ihnen hoffentlich helfen, die richtige Wahl zu treffen.



Wir stellen Jenkins vor





Jenkins ist ein bekanntes, flexibles CI / CD-Tool zur Automatisierung einer Vielzahl von Aufgaben im Zusammenhang mit Softwareprojekten. Jenkins ist vollständig in Java geschrieben und unter der MIT-Lizenz veröffentlicht. Es verfügt über leistungsstarke Funktionen zur Automatisierung von Aufgaben im Zusammenhang mit dem Erstellen, Testen, Bereitstellen, Integrieren und Freigeben von Software. Dieses Tool kann auf einer Vielzahl von Betriebssystemen verwendet werden. Dazu gehören macOS, Windows und viele Linux-Distributionen wie OpenSUSE, Ubuntu und Red Hat. Es gibt Jenkins-Installationspakete für verschiedene Betriebssysteme. Dieses Tool kann auf Docker und auf jedem System mit einer JRE (Java Runtime Environment) installiert werden.



Jenkins-Entwickler haben mit Jenkins X ein weiteres Projekt erstellt, das auf Kubernetes ausgeführt werden kann. Jenkins X integriert Helm, Jenkins CI / CD-Server, Kubernetes und andere Tools, um CI / CD-Pipelines zu erstellen, die den Best Practices von DevOps entsprechen. Zum Beispiel wird hier GitOps verwendet.



Zu den Vorteilen der Bank of Jenkins kann die Tatsache hinzugefügt werden, dass ihre Skripte sehr gut strukturiert, verständlich und leicht zu lesen sind. Das Jenkins-Team hat ungefähr 1000 Plugins erstellt, die darauf abzielen, die Interaktion von Jenkins mit einer Vielzahl von Technologien zu organisieren. In Skripten können Sie Authentifizierungssysteme verwenden, mit denen Sie beispielsweise eine Verbindung zu verschiedenen geschlossenen Systemen herstellen können.



Während die Jenkins-Pipeline ausgeführt wird, können Sie bei jedem Schritt beobachten, was passiert, ob bestimmte Arbeitsphasen erfolgreich abgeschlossen wurden oder nicht. Sie können dies jedoch beobachten, ohne eine bestimmte grafische Oberfläche zu verwenden, sondern die Funktionen des Terminals zu nutzen.



Jenkins Funktionen



Zu den bekannten Funktionen von Jenkins gehören eine einfache Konfiguration, ein hohes Maß an Automatisierung verschiedener Vorgänge und eine hervorragende Dokumentation. Wenn wir über das Lösen von DevOps-Aufgaben sprechen, wird Jenkins als sehr zuverlässiges Tool angesehen, mit dem es in der Regel keinen Sinn macht, den gesamten Prozess der Projektverarbeitung genau zu überwachen. Dies ist bei anderen CI / CD-Tools nicht der Fall. Lassen Sie uns über einige der wichtigsten Funktionen von Jenkins sprechen.



▍1. Kostenlose Open Source-Unterstützung für mehrere Plattformen



Jenkins kann auf MacOS-, Windows- und Linux-Plattformen ausgeführt werden. Es kann auch in der Docker-Umgebung verwendet werden, sodass Sie die einheitliche und schnelle Ausführung automatisierter Aufgaben organisieren können. Dieses Tool kann auch als Servlet in Java-fähigen Containern wie Apache Tomcat und GlassFish ausgeführt werden. Jenkins Installation ist gut dokumentiert .



▍2. Entwickeltes Ökosystem von Plugins



Das Jenkins-Plugin-Ökosystem sieht viel ausgereifter aus als die Plugin-Ökosysteme anderer CI / CD-Tools. Derzeit gibt es über 1500 Jenkins-Plugins. Diese Plugins zielen darauf ab, eine Vielzahl von Aufgaben zu lösen. Mit ihrer Hilfe können Sie eine Vielzahl von Projekten automatisieren. Die Fülle an kostenlosen Plugins bedeutet, dass jemand, der Jenkins verwendet, keine teuren bezahlten Plugins kaufen muss. Jenkins kann in viele DevOps-Tools integriert werden.



▍3. Einfache Installation und Einrichtung



Jenkins ist ziemlich einfach zu installieren und zu konfigurieren. Gleichzeitig ist der Prozess der Aktualisierung des Systems auch sehr bequem angeordnet. Auch hier ist die Qualität der Dokumentation zu erwähnen, da Sie Antworten auf eine Vielzahl von Fragen zur Installation und Konfiguration von Jenkins finden.



▍4. Freundliche Gemeinschaft



Wie bereits erwähnt, ist Jenkins ein Open-Source-Projekt, dessen Ökosystem eine Vielzahl von Plugins enthält. Um Jenkins herum gibt es eine große Community von Benutzern und Entwicklern, die das Projekt bei der Entwicklung unterstützen. Gemeinschaft ist einer der Faktoren, die Jenkins Entwicklung vorantreiben.



▍5. Verfügbarkeit der REST-API



Während der Arbeit mit Jenkins können Sie die REST-API verwenden, die die Funktionen des Systems erweitert. Die API für den Remotezugriff auf das System wird in drei Versionen angeboten: XML, JSON mit JSONP-Unterstützung, Python. Hier ist eine Dokumentationsseite, auf der die Details der Arbeit mit der Jenkins REST-API aufgeführt sind.



▍6. Unterstützung für parallele Aufgaben



Jenkins unterstützt die Parallelisierung von DevOps-Aufgaben. Es kann einfach in verwandte Tools integriert und über den Fortschritt der Aufgabe informiert werden. Das Testen Ihres Codes kann beschleunigt werden, indem ein paralleler Build des Projekts mit verschiedenen virtuellen Maschinen organisiert wird.



▍7. Unterstützung für das Arbeiten in verteilten Umgebungen



Mit Jenkins können Sie verteilte Builds auf mehreren Computern organisieren. Diese Funktion ist in großen Projekten anwendbar und verwendet ein Arbeitsschema, nach dem es einen Hauptserver von Jenkins und mehrere Slave-Maschinen gibt. Slave-Maschinen können auch in Situationen verwendet werden, in denen Sie das Testen eines Projekts in verschiedenen Umgebungen organisieren müssen. Diese Eigenschaften unterscheiden Jenkins von anderen ähnlichen Projekten.



Einführung in GitLab





GitLab CI / CD ist eines der neuesten und beliebtesten Tools für DevOps-Ingenieure. Dieses kostenlose Open Source-Tool ist in das GitLab-Versionskontrollsystem integriert. Die GitLab-Plattform verfügt über eine Community-Version. Sie unterstützt die Verwaltung von Repositorys, Tools zum Verfolgen von Problemen, das Organisieren von Codeüberprüfungen und Mechanismen zum Erstellen von Dokumentationen. Unternehmen können GitLab lokal installieren und es zur sicheren Benutzerautorisierung und -authentifizierung mit Active Directory- und LDAP-Servern verknüpfen.



In diesem Video-Tutorial erfahren Sie, wie Sie CI / CD-Pipelines mithilfe der GitLab CI / CD-Funktionen erstellen.



GitLab CI / CD wurde ursprünglich als eigenständiges Projekt veröffentlicht, aber 2015 wurde dieses Toolkit in GitLab 8.0 integriert. Ein separater GitLab CI / CD-Server kann über 25.000 Benutzer unterstützen. Auf der Basis solcher Server können Sie Systeme erstellen, die hoch verfügbar sind.



GitLab CI / CD und das Hauptprojekt von GitLab sind in Ruby and Go geschrieben. Sie werden unter der MIT-Lizenz veröffentlicht. GitLab CI / CD unterstützt zusätzlich zu den üblichen Funktionen von CI / CD-Tools zusätzliche Funktionen wie die Arbeitsplanung.



Es ist sehr einfach, GitLab CI / CD in ein Projekt zu integrieren. Bei Verwendung von GitLab CI / CD ist der Prozess der Verarbeitung des Projektcodes in Phasen unterteilt, die jeweils aus mehreren Aufgaben bestehen können, die in einer bestimmten Reihenfolge ausgeführt werden. Aufgaben eignen sich zur Feinabstimmung.



Aufgaben können parallel ausgeführt werden. Nach dem Einrichten der Abfolge von Phasen und Aufgaben ist die CI / CD-Pipeline betriebsbereit. Der Fortschritt kann überwacht werden, indem der Status der Aufgaben überwacht wird. Daher ist die Verwendung von GitLab CI / CD sehr praktisch, möglicherweise sogar bequemer als andere ähnliche Tools.



Funktionen von GitLab CI / CD und GitLab



GitLab CI / CD ist eines der beliebtesten DevOps-Tools. Das Projekt zeichnet sich durch eine qualitativ hochwertige Dokumentation aus, seine Funktionen sind einfach und bequem zu bedienen. Wenn Sie mit GitLab CI / CD noch nicht vertraut sind, gibt Ihnen die folgende Liste der Funktionen dieses Tools eine allgemeine Vorstellung davon, was Sie davon erwarten können. Es ist zu beachten, dass viele dieser Funktionen mit der GitLab-Plattform selbst zusammenhängen, in die GitLab CI / CD integriert ist.



▍1. Popularität



GitLab CI / CD ist ein relativ neues Tool, das weit verbreitet ist. GitLab CI / CD hat sich allmählich zu einem äußerst beliebten CI / CD-Tool entwickelt, das zum automatisierten Testen und Bereitstellen von Software verwendet wird. Es ist einfach anzupassen. Es ist auch ein kostenloses CI / CD-Tool, das in die GitLab-Plattform integriert ist.



▍2. GitLab Pages und Jekyll-Unterstützung



Jekyll ist ein statischer Site-Generator, der innerhalb des GitLab Pages-Systems verwendet werden kann, um Sites basierend auf GitLab-Repositorys zu erstellen. Das System nimmt Quellmaterialien und generiert darauf basierend eine vorgefertigte statische Site. Sie können das Erscheinungsbild dieser Websites steuern, indem Sie die _config.ymlvon Jekyll verwendete Datei bearbeiten .



▍3. Projektplanungsfunktionen



Die Möglichkeit, Projektmeilensteine ​​zu planen, erleichtert die Verfolgung von Problemen und Problemgruppen. Auf diese Weise können Sie die Organisation der Arbeit an Projekten verwalten und deren Implementierung für ein bestimmtes Datum planen.



▍4. Automatische Skalierung von CI-Läufern



Dank der automatischen Skalierung der Läufer, die für die Ausführung bestimmter Aufgaben verantwortlich sind, können Sie die Kosten für die Anmietung von Serverkapazität erheblich senken. Dies ist sehr wichtig, insbesondere in Umgebungen, in denen Projekte parallel getestet werden. Dies ist auch wichtig für große Projekte mit mehreren Repositorys.



▍5. Tools zur Problemverfolgung



Die leistungsstarken Funktionen zur Problemverfolgung von GitLab haben dazu geführt, dass die Plattform von vielen Open Source-Projekten verwendet wird. GitLab CI / CD ermöglicht das parallele Testen verschiedener Codezweige. Es ist bequem, Testergebnisse in der Systemschnittstelle zu analysieren. Dies unterscheidet GitLab CI / CD von Jenkins.



▍6. Einschränken des Zugriffs auf Repositorys



Die GitLab-Plattform unterstützt die Einschränkung des Zugriffs auf Repositorys. Beispielsweise können denen, die an einem Projekt in einem Repository zusammenarbeiten, Rechte zugewiesen werden, die ihren Rollen entsprechen. Dies gilt insbesondere für Unternehmensprojekte.



▍7. Aktive Community-Unterstützung



Um GitLab hat sich eine aktive Community entwickelt, die zur Entwicklung dieser Plattform und ihrer Tools beiträgt, insbesondere GitLab CI / CD. 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 die Arbeit mit verschiedenen Versionskontrollsystemen



GitLab CI / CD ist ein System, das nicht nur mit dem Code in den GitLab-Repositorys arbeiten kann. Beispielsweise kann Code in einem GitHub-Repository gespeichert werden, und eine CI / CD-Pipeline kann mit GitLab CI / CD über GitLab organisiert werden.



Jenkins vs GitLab CI / CD Vergleich



Jenkins und GitLab CI / CD sind sehr gute Tools, mit denen die CI / CD-Pipeline ordnungsgemäß funktioniert. Wenn Sie sie jedoch vergleichen, stellt sich heraus, dass sie sich in vielerlei Hinsicht voneinander unterscheiden, obwohl sie in vielerlei Hinsicht ähnlich sind.

Charakteristisch Jenkins GitLab CI/CD
. , — GitLab.
. .
. .
— . .
CI/CD- , Jenkins Pipeline. .
. .
1000 . GitLab.
API API. API .
JavaScript . .
(Slack, GitHub). Viele Tools zur Integration in Systeme von Drittanbietern, insbesondere in GitHub und Kubernetes.
Code-Qualitätskontrolle Unterstützt - mit SonarQube-Plugin und anderen Plugins. 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 zwischen diesen DevOps-Tools. Wenn Sie diese Unterschiede kennen, können Sie besser verstehen, wer eines dieser Tools dem anderen vorzieht.



  • GitLab CI / CD kann Git-Repositorys vollständig steuern. Wir sprechen über die Verwaltung von Repository-Zweigen und einige andere Funktionen. Obwohl Jenkins weiß, wie man mit Repositorys arbeitet, bietet er nicht die gleiche Kontrolle über sie wie GitLab CI / CD.
  • Jenkins ist ein kostenloses Open Source Projekt. Wer es wählt, entfaltet es unabhängig. Und GitLab CI / CD ist in der GitLab-Plattform enthalten, es ist eine vorgefertigte Lösung.
  • GitLab CI / CD unterstützt die erweiterte Aufgabenverwaltung auf Projektebene. Diese Seite von Jenkins ist weniger entwickelt.


Jenkins und GitLab CI / CD: Stärken und Schwächen



Inzwischen haben Sie eine Vorstellung von Jenkins und GitLab CI / CD. Um Sie noch besser mit diesen Tools vertraut zu machen, schauen wir uns ihre Stärken und Schwächen an. Wir gehen davon aus, dass Sie bereits eine Entscheidung getroffen haben, welches Tool Sie benötigen. In diesem Abschnitt können Sie sich hoffentlich selbst testen.



▍ Jenkins Stärken



  • Eine große Anzahl von Plugins.
  • Volle Kontrolle über die Installation des Tools.
  • Einfaches Debuggen von Läufern.
  • Einfache Konfiguration von Knoten.
  • Einfache Code-Bereitstellung.
  • Sehr gutes System zur Verwaltung von Anmeldeinformationen.
  • Flexibilität und Vielseitigkeit.
  • Unterstützung für verschiedene Programmiersprachen.
  • Das System ist intuitiv.


▍Schwächen von Jenkins



  • .
  • Jenkins , , .
  • CI/CD-.


▍ GitLab CI/CD



  • Docker.
  • .
  • , CI/CD-.
  • .
  • .
  • .
  • .
  • .


▍ GitLab CI/CD



  • / .
  • .
  • CI/CD- .




Sowohl Jenkins als auch GitLab CI / CD haben Stärken und Schwächen. Die Antwort auf die Frage, was zu wählen ist, hängt von den Bedürfnissen und Merkmalen eines bestimmten Projekts ab. Jedes der heute getesteten CI / CD-Tools unterscheidet sich in bestimmten Besonderheiten, obwohl diese Tools entwickelt wurden, um dasselbe Problem zu lösen. Abgesehen davon ist Jenkins ein eigenständiges Tool, während GitLab CI / CD Teil einer Plattform für die Code-Zusammenarbeit ist.



Bei der Auswahl eines CI / CD-Systems sollten zusätzlich zu seinen Funktionen die damit verbundenen Kosten und die Gewöhnung der DevOps-Ingenieure, die das Projekt unterstützen, berücksichtigt werden.



Welche CI / CD-Tools verwenden Sie?










All Articles