Das Erstellen und Bereitstellen einer Anwendung kann eine schwierige Aufgabe sein. Warum nicht einen Jenkins Build-Job verwenden, um den gesamten Prozess zu automatisieren? Sie konzentrieren sich auf das Erstellen, während Jenkins den Code-Deployment übernimmt.
In diesem Tutorial erfahren Sie, wie Sie mithilfe von Jenkins Ihr Code-Deployment automatisieren, um Zeit zu sparen, damit Sie sich gleichzeitig auf andere Aufgaben konzentrieren können.
Bereit? Zeit, einzutauchen!
Voraussetzungen
Dieses Tutorial enthält praktische Demonstrationen. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:
- Ein Ubuntu-System – dieses Tutorial verwendet Ubuntu 20.04 für die Demonstrationen
- A GitHub account
- OpenJDK-Version 1.8.0_292
- Jenkins-Version 2.303.1
- Node.js-Version 14.17.6
- Forken Sie dieses GitHub-Repository – Nach dem Forken notieren Sie sich die URL des GitHub-Repositorys, da Sie sie später benötigen.
Auch wenn das im folgenden Screenshot gezeigte Repository leicht von dem oben verlinkten abweicht, wird nach dem Forken auch eine andere Repository-URL verwendet.
Erstellen eines Jenkins-Build-Jobs
Jenkins ist ein Open-Source-Automatisierungsserver, der bei der Automatisierung des Softwareentwicklungszyklus unterstützt. Dieser Zyklus umfasst das Erstellen, Testen und Bereitstellen, was die kontinuierliche Integration und kontinuierliche Bereitstellung erleichtert.
In dieser Demo erfahren Sie, wie Sie einen Jenkins-Build-Job erstellen. Ein Build-Job ist in der Regel eine Konfiguration für das autonom laufende Erledigen von Aufgaben zum Erstellen/Verpacken von Software.
- Starten Sie Ihren bevorzugten Browser, navigieren Sie zu http://localhost:8080/ und melden Sie sich bei Ihrem Jenkins-Dashboard an. Port
8080
ist der Standardport für den Zugriff auf das Jenkins-Dashboard.
2. Klicken Sie auf Ihrem Jenkins-Dashboard auf die Schaltfläche Neues Element im linken Bereich, um das Erstellen eines Build-Jobs zu initialisieren. Dadurch wird der Browser zu einer neuen Job-Seite weitergeleitet.

3. Geben Sie als Nächstes einen Projektnamen Ihrer Wahl für den Build-Job in das unten gezeigte Eingabefeld ein. In diesem Beispiel lautet der Projektname webDeploy.
Wählen Sie die Option Freestyle-Projekt, um das Erstellen von Jobs, das Ausführen von Skripten nach dem Build und das Konfigurieren von Projektauslösern zu ermöglichen, und klicken Sie dann auf OK. Sie werden zur Job-Konfigurationsseite weitergeleitet, die Sie im nächsten Schritt sehen werden.

4. Klicken Sie auf die Registerkarte Allgemein und aktivieren Sie das Kontrollkästchen GitHub-Projekt, um einen Quellcode-Manager zu verknüpfen, damit Jenkins weiß, woher er Ihren Code beziehen soll. In dieser Demo wird Git als Quellcode-Manager für das Beispielsprojekt verwendet, das auf GitHub gehostet ist und das Sie zuvor geforkt haben. Fügen Sie die URL des GitHub-Repositorys aus Ihrem GitHub-Konto in das Feld Projekt-URL ein.

5. Klicken Sie schließlich auf die Registerkarte Quellcode-Verwaltung und wählen Sie Git als Ihren Quellcode-Manager aus.
Kopieren Sie diese GitHub-Repository-URL (https://github.com/Claradev32/webDeploy.git) und fügen Sie sie in das Eingabefeld ein. Klicken Sie auf die Schaltfläche Speichern, um Ihre aktuellen Konfigurationen zu speichern.

Erstellen von Anmeldeinformationen für ein Jenkins-Projekt
Vielleicht bevorzugen Sie es, Ihr Repository privat zu halten, was für Kundenprojekte üblich ist. In diesem Fall müssen Sie Anmeldeinformationen erstellen, um Jenkins zu autorisieren, Ihr Projekt von GitHub zu klonen.
Um Anmeldeinformationen für Ihr Jenkins-Projekt zu erstellen, müssen Sie zuerst einen SSH-Schlüssel generieren und Ihrem GitHub-Konto hinzufügen:
1. Öffnen Sie Ihr Ubuntu-Terminal und führen Sie den folgenden Befehl aus, um einen SSH-Schlüssel mit ed25519
als Schlüsseltyp zu generieren. Ersetzen Sie [email protected]
durch Ihre GitHub-E-Mail-Adresse, um sie als Kommentar zum generierten SSH-Schlüssel hinzuzufügen.
2. Speichern Sie Ihren öffentlichen SSH-Schlüssel wie folgt:
- Geben Sie einen Speicherort für den SSH-Schlüssel an und drücken Sie Enter. Wenn Sie dies nicht tun, wird der Befehl den SSH-Schlüssel an einem Standardort speichern, wie unten gezeigt.
- Geben Sie eine sichere Passphrase für den SSH-Schlüssel ein, drücken Sie Enter, um die Passphrase zu bestätigen, und Sie sehen die Ausgabe Ihres öffentlichen SSH-Schlüssels.
- Merken Sie sich den Speicherort Ihres generierten SSH-Schlüssels, da Sie ihn in den folgenden Schritten Ihrem GitHub-Konto hinzufügen werden.

3. Melden Sie sich in Ihrem Webbrowser bei GitHub an und navigieren Sie zu Ihrer Kontoeinstellungsseite.
4. Klicken Sie auf den Link SSH und GPG-Schlüssel im linken Bereich und klicken Sie dann auf Neuer SSH-Schlüssel, wie unten gezeigt, um Ihren neuen SSH-Schlüssel zu konfigurieren.

5. Geben Sie schließlich Ihren bevorzugten Titel für den SSH-Schlüssel ein. Der Titel dient nur zu internen Dokumentationszwecken. Fügen Sie Ihren SSH-Schlüssel aus der zuvor gespeicherten Datei in das Eingabefeld Schlüssel ein und klicken Sie auf SSH-Schlüssel hinzufügen, um den Schlüssel zu speichern.
Denken Sie daran, dass dies Ihr öffentlicher Schlüssel und nicht Ihr privater Schlüssel ist!

Hinzufügen des SSH-Privatschlüssels zu den Jenkins-Anmeldeinformationen
Jetzt, da Sie Ihr SSH-Schlüsselpaar erstellt haben, um es als Jenkins-Anmeldeinformation zu verwenden, müssen Sie auch Ihren SSH-Privatschlüssel zu Ihren Jenkins-Anmeldeinformationen hinzufügen, um Jenkins den Zugriff auf Ihr GitHub-Repository zu ermöglichen. Beachten Sie zuerst die SSH-URL Ihres GitHub-Repositorys.
1. Navigieren Sie zu Ihrer GitHub-Repository-Seite, klicken Sie auf Code → SSH, und klicken Sie auf das unten gezeigte Kopiersymbol, um die SSH-URL in die Zwischenablage zu kopieren.

2. Gehen Sie anschließend zu Ihrem Jenkins-Dashboard, klicken Sie auf Manage Jenkins, um die Einstellungsseite Ihres Projekts zu öffnen.

3. Scrollen Sie nach unten und klicken Sie auf die Option Manage Credentials unter dem Abschnitt Sicherheit, um die Liste Ihrer Jenkins-Anmeldeinformationen anzuzeigen.

4. Klicken Sie auf Jenkins auf der Seite Credentials, um die „System“-Seite zu öffnen, auf der Sie neue Anmeldeinformationen hinzufügen können.

5. Nun, auf der Seite System, fahren Sie mit der Maus über die Option Global credentials (unrestricted), um das Dropdown-Menü anzuzeigen, und klicken Sie auf das Pfeil-nach-unten-Symbol.
Klicken Sie auf Add credentials im Dropdown-Menü. Die Seite leitet Sie zu einem Formular weiter, in dem Sie die neuen Anmeldeinformationen konfigurieren.

6. Wählen Sie SSH-Benutzername mit privatem Schlüssel im ersten Eingabefeld und geben Sie einen Projektnutzernamen im Benutzername-Feld ein. In diesem Beispiel lautet der Benutzername CI/CD.
In diesem Fall handelt es sich bei dem Benutzernamen um rein interne Dokumentation und wird nicht zur Authentifizierung verwendet.

7. Führen Sie den folgenden Befehl aus, um Ihren SSH-Privatschlüssel anzuzeigen, indem Sie den Speicherort entsprechend ändern (der unten angegebene Schlüssel befindet sich im Home-Verzeichnis). Notieren Sie sich Ihren SSH-Privatschlüssel, da Sie ihn im nächsten Schritt zu Ihren Jenkins-Anmeldeinformationen hinzufügen werden.

8. Sobald Sie Ihren SSH-Privatschlüssel notiert haben, kehren Sie zur Seite „Globale Anmeldeinformationen (uneingeschränkt)“ zurück.
Geben Sie die Passphrase ein, die Sie im Abschnitt „Erstellen von Anmeldeinformationen für ein Jenkins-Projekt“ (Schritt zwei) festgelegt haben, in das Eingabefeld „Passphrase“ ein und klicken Sie auf „OK“. Dadurch erhält Jenkins Zugriff auf Ihr GitHub-Repository.
Wenn Sie beim Erstellen des SSH-Schlüssels kein Passwort angegeben haben, klicken Sie auf „Direkt eingeben“ und klicken Sie auf die Schaltfläche „Hinzufügen“. Geben Sie Ihren SSH-Privatschlüssel in das Eingabefeld „Schlüssel“ ein, wie unten gezeigt, und klicken Sie auf die Schaltfläche „OK“, um die Anmeldeinformationen zu speichern.

8. Gehen Sie zurück zu Ihrem Jenkins-Dashboard, bewegen Sie den Mauszeiger über Ihr Projekt und klicken Sie auf das nach unten zeigende Pfeilsymbol und wählen Sie dann Konfigurieren, wie unten gezeigt. Die Seite leitet Sie zur Konfigurationsseite Ihres Projekts weiter.

10. Wählen Sie schließlich den Anmeldenamen der Anmeldedaten im Dropdown-Feld aus (aus Schritt sechs des Abschnitts „Geheimen Schlüssel zu Jenkins-Anmeldedaten hinzufügen“). Jenkins wendet das CID-Prinzip standardmäßig an, um die kontinuierliche Integration und Bereitstellung Ihres Projekts zu gewährleisten.

Konfigurieren von Build-Triggern und Post-Build-Aktionen
Sie haben nun erfolgreich das Grundgerüst eines Build-Jobs erstellt. Aber wenn Sie regelmäßig Änderungen an Ihrem Projekt vornehmen, müssen Sie dann jedes Mal manuell neu bereitstellen? Warum richten Sie nicht Build-Trigger ein? Build-Trigger stellen Ihr Projekt automatisch neu bereit, wenn Änderungen auf GitHub gepusht werden.
1. Klicken Sie auf der Konfigurationsseite Ihres Projekts auf die Registerkarte Build-Triggers, und markieren Sie die Option GitHub-Hook-Trigger für GITScm-Polling. Mit dieser Option können Sie die Änderungen Ihres Projekts automatisch neu bereitstellen.

2. Klicken Sie auf die Registerkarte Build, klicken Sie auf Schritt zum Erstellen hinzufügen und wählen Sie Ausführen von Shell aus, um ein Skript zu erstellen, das ausgeführt wird, wann immer Jenkins eine neue Version Ihres Codes herunterlädt.

Das von Ihnen erstellte Shell-Skript hängt von Ihrer Entwicklungs-Umgebung ab. Wenn Sie Windows verwenden, führt Windows das Skript aus; dasselbe gilt für andere Betriebssysteme.
3. Geben Sie die untenstehenden Shell-Befehle ein und klicken Sie auf Speichern, um das Build-Skript zu speichern. Nach dem Speichern der Änderungen werden Sie zurück auf das Dashboard Ihres Projekts weitergeleitet.
Die unten stehenden Befehle holen (pull
) deinen Code von deinem entfernten Quellcodeort (origin master
) und mit NodeJS NPM install (npm install
) werden die erforderlichen Abhängigkeiten installiert, um dein Projekt auszuführen. Die Befehle werden jedes Mal ausgeführt, wenn du eine Push-Anfrage an deinen Quellcode-Manager sendest.
Dieses bestimmte Projekt verwendet NodeJS für Abhängigkeiten, aber dein spezifisches Projekt vielleicht nicht.

4. Klicke nun auf deinem Projekt-Dashboard auf Jetzt erstellen, um den Build auszuführen.

5. Scrolle nach unten, um den Build-Verlauf zu sehen und den Status des Builds zu überprüfen. Wenn der Build erfolgreich war, siehst du eine ähnliche Ausgabe wie im Screenshot unten.

Wenn der Build fehlschlägt, siehst du die unten gezeigte Ausgabe.

6. Als nächstes scrolle nach oben und klicke auf Konfigurieren, um die Nach-Build-Aktionen des Projekts zu konfigurieren.

7. Klicke auf den Post-Build-Aktionen-Tab, dann auf Nach-Build-Aktion hinzufügen und wähle Git-Publisher aus. Die Seite erweitert den Abschnitt Git Publisher (nächster Schritt).

8. Aktiviere schließlich die Option Nur pushen, wenn der Build erfolgreich ist und klicke auf die Schaltfläche Speichern, um die Änderungen zu speichern. Durch Aktivieren dieser Option teilst du Jenkins mit, den Code nur bereitzustellen, wenn ein Build erfolgreich durchgeführt wurde.

Schluss
In diesem Tutorial haben Sie den Prozess durchlaufen, Jenkins mit Ihrem Quellcode-Verwaltungssystem zu verbinden. Sie haben auch ein Build-Skript erstellt, das automatisch ausgeführt wird, wenn Jenkins eine neue Version Ihres Codes herunterlädt, und Build-Triggers eingerichtet, um Webbereitstellungen zu automatisieren.
Warum sparen Sie sich nicht etwas Zeit, indem Sie Ihre Anwendungsbereitstellung mit einem Jenkins-Build-Job automatisieren?