Softwareentwicklung ist eine Reise. Sie beginnt mit der Planung, der Analyse, dem Design, der Entwicklung, dem Testen, der Bereitstellung und der Wartung. Softwareentwickler benötigen verschiedene Tools, die sie auf dieser Reise unterstützen.
GitLab CI und Jenkins gehören zu den größten Namen in der Nische der kontinuierlichen Integration und Bereitstellung (CI/CD). CI/CD ist eine Reihe von Prozessen zur Automatisierung der Softwareentwicklung.
In diesem Artikel über GitLab und Jenkins werden die beiden Tools definiert, ihre Funktionsweise erläutert und ihre wichtigsten Funktionen verglichen.
Was ist GitLab CI?
GitLab Continuous Integration and Delivery ist ein DevOps-Tool, das die erforderlichen Schritte zum Erstellen, Testen und Bereitstellen Ihres Codes in Ihrer Produktionsumgebung automatisiert.
GitLab CI besteht aus zwei Teilen: Continuous Integration (CI) und Continous Delivery/Deployment (CD).
Diekontinuierliche Integration hat die Aufgabe, alle Builds zu automatisieren. Diese Funktion bietet auch Feedback durch Code-Reviews und automatisiert Sicherheits- und Qualitätstests für Ihren Code. Schließlich erstellt CI ein Release-Paket für die Bereitstellung in Ihrer Produktionsumgebung.
Der Continuous Deployment-Teil von GitLab CI stellt automatisch die Infrastruktur bereit und verwaltet Ticketing, Infrastrukturänderungen und die Versionsverwaltung. CD bietet eine Umgebung für die schrittweise Bereitstellung von Code und ermöglicht die Überprüfung und Überwachung aller vorgenommenen Änderungen. Mit dieser Funktion können Benutzer auch Änderungen zurücknehmen, wann immer dies erforderlich ist.
Wenn diese beiden Funktionen kombiniert werden, können Sie den gesamten Lebenszyklus der Softwareentwicklung (SDLC) mit einem Minimum an manuellen Eingriffen automatisieren.
Kurz gesagt, GitLab CI wird verwendet, um;
- Speichern und Verwalten von Code
- Automatisieren der CI/CD-Pipeline
- Probleme zu verfolgen
- Code sichern
- Zusammenarbeit
Vorteile der Verwendung von GitLab CI
- Höhere Geschwindigkeit: Wenn Sie GitLab CI verwenden, müssen Sie keine manuellen Prozesse wie das Erstellen, Testen und Bereitstellen von Code mehr durchführen.
- Verbesserte Code-Qualität: Mit GitLab CI können Sie Bugs und Fehler in Ihrem Code erfassen, bevor er in die Produktion geht.
- Sicher: GitLab CI verfügt über verschiedene Sicherheitsfunktionen wie das Scannen von Schwachstellen, die Verwaltung von Geheimnissen und das Scannen von Code, um Bedrohungen durch Hacker zu verringern.
- Flexibel: Sie können GitLab CI an die Bedürfnisse Ihres Entwicklungsteams anpassen. Sie können dieses Tool mit den wichtigsten Sprachen und Frameworks verwenden.
- Automatisierte Tests: Sie müssen Tests nicht manuell durchführen, da Sie Skripte schreiben können, um Tests automatisch zu schreiben und auszuführen.
Was ist Jenkins?
Jenkins ist ein erweiterbarer Automatisierungsserver. Dieses Open-Source-Tool hilft Benutzern bei der Verwaltung und Erstellung von Continuous Integration und Continuous Delivery (CI/CD) Pipelines. Jenkins ist ein beliebtes Tool für DevOps und Software-Ingenieure, da es dazu beiträgt, die Softwarequalität, die Zuverlässigkeit und die Geschwindigkeit der Bereitstellung zu verbessern.
Jenkins führt eine Reihe von ‘Jobs’ oder Schritten in einer Pipeline aus. Ein Job besteht aus mehreren Schritten, die nacheinander ausgeführt werden. Ein Schritt in Jenkins kann ein Build, ein Test, eine Bereitstellung oder eine andere Aufgabe sein, die im Lebenszyklus der Softwareentwicklung automatisiert werden kann.
Die Einsatzmöglichkeiten von Jenkins lassen sich wie folgt zusammenfassen;
- Kontinuierliche Integration
- Kontinuierliche Bereitstellung
- Automatisiertes Testen
- Überwachung und Berichterstattung
- Code-Scanning
- Job-Planung
Vorteile der Verwendung von Jenkins
- Skalierbar: Sie können Jenkins sowohl für kleine als auch für große Anwendungen verwenden.
- Einfache Konfiguration: Jenkins hat einen unkomplizierten Konfigurationsprozess, der durch ausreichende Ressourcen unterstützt wird.
- Große Gemeinschaft: Jenkins gibt es schon seit fast zwei Jahrzehnten und hat viele Anhänger gefunden.
- Eine Vielzahl von Plugins: Sie können die Funktionalität von Jenkins mit einer Vielzahl von Plugins verbessern.
- Ermöglicht die parallele Ausführung von Aufträgen: Mit Jenkins können Sie verschiedene Aufgaben gleichzeitig ausführen und so Zeit sparen.
Ähnlichkeiten zwischen GitLab CI und Jenkins
- Beide unterstützen kontinuierliche Integration und kontinuierliche Bereitstellung.
- Beide sind Open-Source-Tools.
- Beide haben eine große Gemeinschaft und Anhängerschaft.
- Beide unterstützen eine Vielzahl von Sprachen und Frameworks
- Beide automatisieren verschiedene Aufgaben im Lebenszyklus der Softwareentwicklung
- Beide haben ein großes Ökosystem von Plugins und Erweiterungen
GitLab CI vs. Jenkins: Ein Vergleich der Funktionen
Funktion | GitLab CI | Jenkins |
Open-Source | Ja | Ja |
Unterstützung von Sprachen | Viele Sprachen | Viele Sprachen |
Preisgestaltung | Die meisten Funktionen sind in der kostenlosen Version verfügbar. Das Tool hat auch kostenpflichtige Pläne mit mehr Funktionen. | Eine neuere Plattform; wurde 2014 erstellt. |
Reifegrad | Eine neuere Plattform; erstellt im Jahr 2014. | Jenkins wurde unter dem Namen Hudson eingeführt, aber 2011 geforkt und in Jenkins umbenannt. |
Benutzerfreundlichkeit | Einfach zu bedienen | Für Anfänger kann es kompliziert sein. |
Hosting | Intern und extern | Intern und extern |
Voraussetzungen | Node.JS, Git, Ruby, Go | Java-Laufzeitumgebung |
GitLab CI im Vergleich. Jenkins: Detaillierter Vergleich
Auch wenn GitLab und Jenkins Gemeinsamkeiten aufweisen, gibt es doch deutliche Unterschiede, die sich auf die Art und Weise auswirken, wie sie den CI/CD-Prozess verwalten. Dies sind einige der wichtigsten Bereiche;
Architektur
Jenkins verwendet eine Master-Worker-Architektur zur Verwaltung von Builds.
- DerJenkins-Master plant die Builds und verteilt sie zur Ausführung an die Worker. Diese Funktion überwacht auch den Status der Worker, sammelt und aggregiert alle Build-Ergebnisse im Web-Dashboard.
- Jenkins Worker ist eine ausführbare Java-Datei, die auf einem entfernten Rechner läuft. Diese Funktion, die auch als Build-Agent bezeichnet wird, wartet auf alle Anfragen vom Master und führt sie aus. Sie können bis zu 100 Knoten haben und nach Belieben Worker hinzufügen oder entfernen.
GitLab CI ist Teil von GitLab, einer webbasierten Oberfläche zur Verwaltung von Repositories, Merge-Anfragen und vielem mehr. GitLab CI besteht aus verschiedenen Komponenten;
- Das GitLab CI/CD-Tool ermöglicht Ihnen die Verwaltung von Builds.
- GitLab Runners führt alle CI-Aufträge aus. Dieser leichtgewichtige Prozess kann in der Cloud oder auf Ihrem Rechner ausgeführt werden.
- CI/CD-Pipeline-Konfigurationen werden in der Datei
.gitlab-ci.yml
definiert. Diese Datei definiert alle Aufträge, Phasen und Schritte in der Pipeline.
Plugins
Jenkins verfügt über mehr als 1800 von der Community zur Verfügung gestellte Plugins. Diese Plugins decken verschiedene Bereiche ab, z. B. die Erstellung, Bereitstellung und Automatisierung von Projekten. Benutzer können ihre CI/CD-Pipelines anpassen und die Funktionalität von Jenkins erweitern.
Entwickler können mit Hilfe der umfangreichen Dokumentation von Jenkins eigene Plugins erstellen. Sie können auch Plugins erstellen und sie dem Jenkins-Verzeichnis hinzufügen. Jenkins hat eine große und aktive Community, die bei der Erstellung von Plugins hilft.
GitLab CI ermöglicht Ihnen die Verbindung/Integration mit externen Diensten für erweiterte Funktionen. Die Bibliothek der Plugins/Erweiterungen ist im Vergleich zu Jenkins kleiner, aber sie wächst. Da GitLab CI Teil von GitLab ist, verfügt es über viele integrierte Funktionen.
Benutzer können ihre Arbeitsabläufe mithilfe der Datei .gitlab-ci.yml
anpassen/konfigurieren. Sie können alle Jobs, Phasen und Schritte festlegen.
Pipelines
MitJenkins können Sie sowohl eine deklarative als auch eine skriptgesteuerte Pipeline-Syntax verwenden. Sie können jeden der beiden Ansätze mit der Web-UI oder einer Jenkins-Datei verwenden. Letzteres ist die bevorzugte Methode. Sie können die Pipelines als Jenkinsdateien in dem Repository speichern, in dem der Quellcode gespeichert ist. Die Plattform verfügt über eine integrierte webbasierte Benutzeroberfläche, über die Sie die Ausführungen überwachen und visualisieren können.
GitLab CI verfügt über eine .gitlab-ci.yml
, in der alle Pipelines definiert sind. Diese YML-basierte Konfigurationsdatei wird im Stammverzeichnis des Projekts gespeichert. Die gitlab-ci.yml
ist bekannt für ihre einfache Syntax mit einer Reihe von Befehlen und vordefinierten Schlüsselwörtern, die die häufigsten CI/CD-Aufgaben abdecken. GitLab CI lässt sich in andere GitLab-Funktionen integrieren und ermöglicht so die Verwaltung von Quellcode, die Verfolgung von Problemen, Code-Reviews, Merge Requests und vieles mehr.
Wie Sie Jenkins installieren
Bevor Sie Jenkins auf Ihrem PC installieren können, benötigen Sie eine Java-Laufzeitumgebung (JRE). Laden Sie Java von der offiziellen Website herunter, abhängig von Ihrem Betriebssystem. Ich werde Ubuntu verwenden, um den Installationsprozess zu demonstrieren.
Wenn Sie ein anderes Betriebssystem verwenden, sehen Sie sich unseren Artikel über die Installation von Jenkins an und folgen Sie den dort aufgeführten Schritten.
Für Ubuntu folgen Sie bitte diesen Schritten;
Schritt 1: Überprüfen Sie, ob JRE installiert ist. Führen Sie diesen Befehl aus:
java -version
Wenn sie installiert ist, erhalten Sie eine Meldung wie diese:
Ich habe Version “17.0.6” installiert, aber Sie können auch eine höhere Version haben.
Schritt 2: Importieren Sie den GPG-Schlüssel mit diesem Befehl in Ihr System;
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
Schritt 3: Fügen Sie das Software-Repository von Jenkins mit diesem Befehl hinzu;
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
Schritt 4: Aktualisieren Sie Ihr System mit diesem Befehl:
sudo apt update
Schritt 5: Installieren Sie Jenkins mit diesem Befehl:
sudo apt install jenkins -y
Schritt 6 : Überprüfen Sie mit diesem Befehl, ob Jenkins installiert ist:
sudo systemctl status jenkins
Wenn es installiert ist, sehen Sie etwas Ähnliches wie das hier:
Drücken Sie ctrl z auf Ihrer Tastatur, um den Vorgang zu beenden und zum nächsten Schritt überzugehen.
Schritt 7: Ändern Sie die Firewall und Jenkins auf Ihrem System. Verwenden Sie diesen Befehl:
sudo ufw allow 8080
Schritt 8: Überprüfen Sie den Status
sudo ufw status
Schritt 9 : Wenn der Status im vorherigen Schritt“Inaktiv” lautet, aktivieren Sie ihn mit diesem Befehl:
sudo ufw enable
Schritt 10: Öffnen Sie Jenkins im Browser, indem Sie Folgendes in Ihren Browser eingeben;
http://localhost:8080
Schritt 11 : Ermitteln Sie das “Administrator-Passwort”, indem Sie diesen Befehl ausführen:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Schritt 12: Entsperren Sie Jenkins
Kopieren Sie das auf Ihrem Terminal angezeigte Passwort, fügen Sie es in das in Schritt zehn geöffnete Dialogfeld “Administratorpasswort” ein und klicken Sie auf “Weiter”.
In dem neuen Fenster werden Sie aufgefordert, Plugins zu installieren. Da Sie im Moment nicht viele Plugins benötigen, können Sie die Standard-Plugins auswählen und mit dem nächsten Schritt fortfahren
Schritt 13: Erstellen Sie Ihr Konto, ‘Speichern und weiter’.
Schritt 14: Richten Sie eine Sofortkonfiguration ein und beginnen Sie mit der Verwendung von Jenkins
So installieren Sie GitLab CI
GitLab CI ist Teil von GitLab. Um GitLab CI zu erhalten, müssen Sie zunächst GitLab Runner installieren, den Agenten, der alle Aufträge ausführt, bevor er sie an GitLab sendet.
Ich werde Ubuntu verwenden, um den Vorgang zu demonstrieren. Wenn Sie ein anderes Betriebssystem verwenden, sehen Sie in der offiziellen Dokumentation nach. Für Ubuntu folgen Sie bitte diesen Schritten;
Schritt 1: Aktualisieren und konfigurieren Sie Ihr System;
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
Sie können eine E-Mail-Lösung für den Versand von Updates konfigurieren oder diesen Schritt überspringen.
Schritt 2: Hinzufügen des GitLab-Paket-Repositorys
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
Schritt 3: Konfigurieren Sie Ihr GitLab-Konto.
Es gibt verschiedene Optionen für das Hosting von GitLab. Folgen Sie den Anweisungen je nach Ihrer Wahl.
Schritt 4: Suchen Sie den Hostnamen und melden Sie sich an. Klicken Sie auf diesen Befehl in Ihrem Terminal, um Ihr Passwort zu erhalten;
/etc/gitlab/initial_root_password
Optional: Legen Sie die Kommunikationseinstellungen fest, um Produktaktualisierungen und Neuigkeiten von GitLab zu erhalten.
Beschränkungen von Jenkins
- Die Einrichtung von Jenkins für große Projekte kann sehr komplex sein.
- Wenn es nicht richtig konfiguriert ist, kann Jenkins anfällig für Sicherheitsangriffe sein.
- Es kann schwierig sein, große Projekte zu skalieren, wenn Sie Jenkins verwenden.
- Jenkins kann eine Menge Ressourcen verbrauchen, wenn zahlreiche gleichzeitige Builds ausgeführt werden.
Beschränkungen von Gitlab CI
- GitLab CI kann für große Projekte sehr komplex sein.
- Abhängig von GitLab.
- Skalierbarkeit ist bei großen Projekten ein Problem.
- Das Plugin-Ökosystem ist im Vergleich zu Jenkins nicht groß.
Meinung des Autors
Sowohl GitLab CI als auch Jenkins sind fantastische Tools für den Lebenszyklus der Softwareentwicklung. Ich würde mich für Jenkins entscheiden, wenn ich eine ausgereiftere Plattform und vollständige Kontrolle über die Anpassung haben möchte. Andererseits werde ich mich für GitLab CI entscheiden, wenn es um die Benutzeroberfläche geht und ich von der GitLab-Integration profitieren möchte.
Wir glauben nun, dass Sie die Unterschiede zwischen GitLab CI und Jenkins erkennen können. Auch wenn die beiden Tools ähnliche Funktionen erfüllen sollen, unterscheiden sie sich in ihren Funktionen und in der Art und Weise, wie sie ihre Aufgaben erfüllen. Die Wahl zwischen den beiden hängt von der Art Ihres Projekts, Ihren Fähigkeiten, Ihrem Geschmack und Ihren Vorlieben ab.
Sie können sich nun diese Jenkins-Hosting-Plattformen ansehen.