Wie erstelle ich meine erste Jenkins-Pipeline?

Eine Schritt-für-Schritt-Anleitung zum Erstellen der Jenkins-Pipeline


Warum Jenkins Pipeline??

Continuous Delivery (CD) ist ein wesentlicher Bestandteil von DevOps Lifecycle.

Es stellt sicher, dass die Software- / Anwendungsentwickler, die sie erstellen, immer produktionsbereit sind. Damit dies geschieht, muss der Code bei jeder Aktualisierung kontinuierlich erstellt, getestet und bereitgestellt werden. Hier kommt die Jenkins Pipeline ins Spiel.

In DevOps wird die kontinuierliche Integration und kontinuierliche Bereitstellung (CI / CD) über die Jenkins-Pipeline erreicht. Die Verwendung von Jenkins Pipeline für CD hilft dabei, die Software schneller und häufiger zu veröffentlichen. Dies hilft, das Feedback in jede nächste Version einzubeziehen.

Was ist Jenkins Pipeline??

Jenkins Pipeline ist eine Kombination von Jobs zur kontinuierlichen Bereitstellung von Software mit Jenkins.

Ich nehme an, Sie wissen, was Jenkins ist. Wenn nicht, dann überprüfen Sie dies Udemy Kurs, um Jenkins zu meistern.

Eine Jenkins-Pipeline besteht aus mehreren Zuständen oder Stufen, die nacheinander ausgeführt werden. JenkinsFile ist eine einfache Textdatei, mit der eine Pipeline als Code in Jenkins erstellt wird. Es enthält Code in Groovy Domain Specific Language (DSL), der einfach zu schreiben und für Menschen lesbar ist.

Entweder können Sie JenkinsFile separat ausführen, oder Sie können den Pipeline-Code auch über die Jenkins-Web-Benutzeroberfläche ausführen. Es gibt zwei Möglichkeiten, wie Sie mit Jenkins eine Pipeline erstellen können.

  • Deklarativ – eine neue Methode zum Erstellen der Jenkins-Pipeline. Hier schreiben Sie groovigen Code mit “Pipeline” -Blöcken, der in ein SCM (Source Code Management) eingecheckt wird.
  • Scripted – Art und Weise, groovigen Code zu schreiben, bei dem der Code in „Knoten“ -Blöcken definiert ist.

Wenn Sie Jenkins nicht installiert haben, installieren Sie es bitte zuerst, bevor wir mit der Demo beginnen. Stellen Sie sicher, dass Jenkins auf Ihrem System ausgeführt wird.

Erstellen Sie eine Jenkins-Pipeline

So sieht ein Jenkins-Pipeline-Fluss aus, der aus mehreren Phasen zwischen Entwicklern, die eine Software (Codierung) erstellen, und Software besteht, die in der Produktion geliefert wird.

Jenkins Pipeline

Erstellen wir eine deklarative Pipeline.

Klicken Sie im Jenkins-Dashboard auf Neues Element. Geben Sie dann einen Elementnamen ein, z. B. “Erste Pipeline”, und wählen Sie das Projekt “Pipeline” aus. Klicken Sie dann auf OK.

Neuer Gegenstand - Jenkins Pipeline

Klicken Sie auf die Registerkarte Pipeline (siehe Abbildung unten) und geben Sie hier Ihren JenkinsFile-Code (Groovy Code) ein.

JenkinsFile Code

Pipeline {
Agent beliebig
Stufen {
Bühne (‘Build’) {
Schritte {
echo ‘Hi, GeekFlare. Beginn der Erstellung der App. ‘
}}
}}
Bühne (‘Test’) {
Schritte {
Eingabe (‘Möchten Sie fortfahren?’)
}}
}}
Bühne (‘Bereitstellen’) {
parallel {
Stufe (‘Start bereitstellen’) {
Schritte {
Echo "Starten Sie die Bereitstellung .."
}}
}}
stage (‘Jetzt bereitstellen’) {
Agent {
Docker {
reuseNode true
Bild “Nginx”
}}
}}

Schritte {
Echo "Docker erstellt"
}}
}}
}}
}}
Bühne (‘Prod’) {
Schritte {
Echo "App ist Prod Ready"
}}

}}
}}
}}

Lassen Sie mich die obigen Blöcke erklären.

  • Das Pipeline Block besteht aus allen Anweisungen zum Erstellen, Testen und Bereitstellen von Software. Es ist die Schlüsselkomponente einer Jenkins-Pipeline.
  • Ein Agent wird zugewiesen, um die Pipeline auf einem Knoten auszuführen und einen Arbeitsbereich für die Pipeline zuzuweisen.
  • EIN Bühne ist ein Block, der Schritte zum Erstellen, Testen und Bereitstellen der Anwendung enthält. Stufen werden verwendet, um die Jenkins-Pipeline-Prozesse zu visualisieren.
  • EIN Schritt ist eine einzelne Aufgabe, die ausgeführt werden muss, z. B. ein Verzeichnis erstellen, ein Docker-Image ausführen, eine Datei löschen usw..

Den obigen Groovy-Code verwende ich für die JenkinsFile. Jeder verfügbare Agent wird der Pipeline zugewiesen. Dann definiere ich die Build-Phase und führe einen einfachen Echo-Schritt aus. Dann habe ich die Testphase definiert, in der der Schritt fragt, ob Sie fortfahren möchten oder nicht. Danach habe ich eine Bereitstellungsphase erstellt, in der zwei weitere Phasen parallel ausgeführt werden. Die Bereitstellungsstartphase enthält einen Schritt mit dem Befehl echo, und die Bereitstellung enthält jetzt einen Schritt, mit dem ein Docker-Image von Nginx auf dem Knoten abgerufen wird. Schließlich gibt es eine Prod-Stufe mit einem einfachen Echo-Schritt.

Die oben erläuterte Pipeline enthält Phasen, in denen Sie anhand einfacher Schritte verstehen, wie sie funktioniert. Sobald Sie gelernt haben, wie Sie eine Pipeline erstellen, können Sie die Komplexität erhöhen und auch komplexe Pipelines erstellen.

Wenn Sie den Code auf der Registerkarte Pipeline haben, klicken Sie auf Übernehmen und Speichern. Klicken Sie abschließend auf Jetzt erstellen, um die soeben erstellte Jenkins-Pipeline zu erstellen.

Jetzt bauen

So sieht die Benutzeroberfläche aus, wenn die Pipeline ausgeführt wird. Wenn Sie alle Schritte korrekt ausgeführt haben, ist Ihr Build erfolgreich und zeigt eine blaue Farbe für den Build an (Nr. 27). Wenn der Build fehlerhaft ist, wird der Build rot gefärbt (# 27)..

Jenkins Build 27

Klicken Sie nun auf Build Nr. 27 und dann auf Konsolenausgabe, um zu überprüfen, was genau im Back-End passiert ist, als es ausgeführt wurde.

Jenkins Build

So sieht die Ausgabe aus, wenn sie mit einer SUCCESS-Nachricht endet.

Erfolgskonsolenausgabe

Wird vom Benutzer geekflare gestartet
Laufen in Haltbarkeitsstufe: MAX_SURVIVABILITY
[Pipeline] Start der Pipeline
Knoten [Pipeline]
Läuft auf Jenkins in / var / lib / jenkins / workspace / First Pipeline
[Pipeline] {
[Pipeline] -Stufe
[Pipeline] {(Build)
[Pipeline] Echo
Hallo GeekFlare. Beginnen Sie mit dem Erstellen der App.
[Pipeline]}
[Pipeline] // Stufe
[Pipeline] -Stufe
[Pipeline] {(Test)
[Pipeline] Eingabe
Willst du fortfahren?
Fahren Sie fort oder brechen Sie ab
Genehmigt von Geekflare
[Pipeline]}
[Pipeline] // Stufe
[Pipeline] -Stufe
[Pipeline] {(Bereitstellen)
[Pipeline] parallel
[Pipeline] {(Zweig: Start bereitstellen)
[Pipeline] {(Zweig: Jetzt bereitstellen)
[Pipeline] -Stufe
[Pipeline] {(Start bereitstellen)
[Pipeline] -Stufe
[Pipeline] {(Jetzt bereitstellen)
[Pipeline] getContext
[Pipeline] isUnix
[Pipeline] sh
[Pipeline] Echo
Starten Sie die Bereitstellung ..
[Pipeline]}
+ Docker inspizieren -f. Nginx
[Pipeline] // Stufe
[Pipeline]}

Fehler: Kein solches Objekt: nginx
[Pipeline] isUnix
[Pipeline] sh
+ Docker ziehen Nginx
Standard-Tag verwenden: Neueste
spätestens: Aus Bibliothek / Nginx ziehen
8d691f585fa8: Fs-Schicht ziehen
5b07f4e08ad0: fs-Ebene ziehen
abc291867bca: Fs-Schicht ziehen
abc291867bca: Überprüfen der Prüfsumme
abc291867bca: Download abgeschlossen
5b07f4e08ad0: Prüfsumme überprüfen
5b07f4e08ad0: Download abgeschlossen
8d691f585fa8: Überprüfen der Prüfsumme
8d691f585fa8: Download abgeschlossen
8d691f585fa8: Vollständig ziehen
5b07f4e08ad0: Vollständig ziehen
abc291867bca: Fertig ziehen
Digest: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Status: Heruntergeladenes neueres Bild für Nginx: Neueste
[Pipeline] withDockerContainer
Jenkins scheint nicht in einem Container zu laufen
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / workspace / Erste Pipeline" -v "/ var / lib / jenkins / workspace / Erste Pipeline: / var / lib / jenkins / workspace / Erste Pipeline: rw, z" -v "/ var / lib / jenkins / workspace / Zuerst [E-Mail geschützt]: / var / lib / jenkins / workspace / Zuerst [E-Mail geschützt]: rw, z" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** Nginx Katze
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, comm
[Pipeline] {
[Pipeline] Echo
Docker erstellt
[Pipeline]}
$ docker stop –time = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[Pipeline]}
[Pipeline] // Stufe
[Pipeline]}
[Pipeline] // parallel
[Pipeline]}
[Pipeline] // Stufe
[Pipeline] -Stufe
[Pipeline] {(Prod)
[Pipeline] Echo
App ist Prod Ready
[Pipeline]}
[Pipeline] // Stufe
[Pipeline]}
[Pipeline] // Knoten
[Pipeline] Ende der Pipeline
Fertig: ERFOLG

Die obige Jenkins-Pipeline hat ein Docker-Image von Nginx erstellt. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen. Sie können sehen, dass das Nginx-Docker-Bild ebenfalls aufgelistet ist.

[E-Mail geschützt]: ~ $ Docker Bild ls
REPOSITORY TAG IMAGE ID ERSTELLTE GRÖSSE
nginx aktuell 540a289bab6c vor 2 Wochen 126MB
httpd neueste 7d85cc3b2d80 vor 2 Monaten 154MB
redis neueste f7302e4ab3a8 vor 2 Monaten 98.2MB
geekflare_mongodb spätestens 095d17727ca0 vor 3 Monaten 325MB

Fazit

Ich hoffe, das gibt Ihnen eine Vorstellung davon Jenkins Pipeline Vorteile und wie Sie einen erstellen können. Das Obige ist eine einfache Demonstration, und der beste Weg, dies zu lernen, ist der Versuch, komplexe Pipelines zu bauen.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map