Wie man Create Ihre erste Jenkins-Pipeline?

Eine Schritt-für-Schritt-Anleitung zum Erstellen der Jenkins-Pipeline
Warum Jenkins-Pipeline?
Continuous Delivery (CD) ist ein wesentlicher Bestandteil des DevOps-Lebenszyklus.
Es stellt sicher, dass die Software-/Anwendungsentwickler, die sie erstellen, immer produktionsbereit sind. Damit dies geschieht, wann immer der Code aktualisiert wirdated, es muss kontinuierlich erstellt, getestet und bereitgestellt werden. Hier kommt die Jenkins Pipeline ins Spiel.
In DevOpsKontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) werden durch die Jenkins Pipeline erreicht. Die Verwendung von Jenkins Pipeline für CD trägt dazu bei, die Software mit schnelleren und häufigeren Releases bereitzustellen. Das hilft bei der Einarbeitungate das Feedback in jeder nächsten Veröffentlichung.
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 states oder Stufen, und sie werden in einer Sequenz nacheinander ausgeführt. JenkinsFile ist eine einfache Textdatei, die zum Erstellen verwendet wirdate eine Pipeline als Code in Jenkins. 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ührenateAlternativ können Sie den Pipeline-Code auch über die Jenkins-Web-Benutzeroberfläche ausführen. Es gibt zwei Möglichkeiten, wie Sie erstellen könnenate eine Pipeline mit Jenkins.
- 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.
Create eine Jenkins-Pipeline
So sieht ein Jenkins-Pipeline-Fluss aus, der aus mehreren Phasen zwischen Entwicklern, die eine Software (Codierung) erstellen, und Software, die in der Produktion geliefert wird, besteht.

Lass uns Create 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.

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

pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Hi, GeekFlare. Starting to build the App.'
}
}
stage('Test') {
steps {
input('Do you want to proceed?')
}
}
stage('Deploy') {
parallel {
stage('Deploy start ') {
steps {
echo "Start the deploy .."
}
}
stage('Deploying now') {
agent {
docker {
reuseNode true
image ‘nginx’
}
}
steps {
echo "Docker Created"
}
}
}
}
stage('Prod') {
steps {
echo "App is Prod Ready"
}
}
}
}
Lassen Sie mich die obigen Blöcke erklären.
- Der Pipeline Der Block enthält alle Anweisungen zum Erstellen, Testen und Bereitstellen von Software. Es ist die Schlüsselkomponente einer Jenkins-Pipeline.
- An Agent wird beauftragt, die Pipeline auf einem Knoten auszuführen und zuzuweisenate ein Arbeitsbereich für die Pipeline.
- A Stufe ist ein Block, der Schritte zum Erstellen, Testen und Bereitstellen der Anwendung enthält. Stufen werden zur Visualisierung der Jenkins-Pipeline verwendet processzB.
- A Schritt ist eine einzelne auszuführende Aufgabe, zum Beispiel create ein Verzeichnis, führen Sie ein Docker-Image aus, löschen Sie eine Datei usw.
Den Groovy-Code oben 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 im Schritt gefragt wird, ob Sie fortfahren möchten oder nicht. Danach habe ich Createda Deploy-Phase, in der zwei weitere Phasen parallel laufen. Die Startphase der Bereitstellung verfügt über einen Schritt mit dem Echo-Befehl, und die Bereitstellung verfügt nun über einen Schritt, der ein Docker-Image von Nginx auf den Knoten zieht. Flosseallygibt es eine Prod-Stufe mit einem einfachen Echo-Schritt.
Die oben erläuterte Pipeline verfügt über Phasen mit einfachen Schritten, damit Sie verstehen, wie sie funktioniert. Sobald Sie lernen, wie man erstelltate Mit einer Pipeline können Sie mehr Komplexität und Creation hinzufügenate auch komplexe Rohrleitungen.
Sobald Sie den Code auf der Registerkarte „Pipeline“ haben, klicken Sie auf „Übernehmen“ und „Speichern“. Flosseally, klicken Sie auf „Jetzt erstellen“, um mit dem Aufbau der gerade erstellten Jenkins-Pipeline zu beginnenated.

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 es Fehler im Build gibt, wird der Build rot gefärbt (# 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.

So sieht die Ausgabe aus, wenn sie mit einer SUCCESS-Nachricht endet.
Success Console Output
Started by user geekflare
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/First Pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Hi, GeekFlare. Starting to build the App.
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] input
Do you want to proceed?
Proceed or Abort
Approved by geekflare
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] parallel
[Pipeline] { (Branch: Deploy start )
[Pipeline] { (Branch: Deploying now)
[Pipeline] stage
[Pipeline] { (Deploy start )
[Pipeline] stage
[Pipeline] { (Deploying now)
[Pipeline] getContext
[Pipeline] isUnix
[Pipeline] sh
[Pipeline] echo
Start the deploy ..
[Pipeline] }
+ docker inspect -f . nginx
[Pipeline] // stage
[Pipeline] }
Error: No such object: nginx
[Pipeline] isUnix
[Pipeline] sh
+ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
8d691f585fa8: Pulling fs layer
5b07f4e08ad0: Pulling fs layer
abc291867bca: Pulling fs layer
abc291867bca: Verifying Checksum
abc291867bca: Download complete
5b07f4e08ad0: Verifying Checksum
5b07f4e08ad0: Download complete
8d691f585fa8: Verifying Checksum
8d691f585fa8: Download complete
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete
abc291867bca: Pull complete
Digest: sha256:922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Status: Downloaded newer image for nginx:latest
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 125:131 -w "/var/lib/jenkins/workspace/First Pipeline" -v "/var/lib/jenkins/workspace/First Pipeline:/var/lib/jenkins/workspace/First Pipeline:rw,z" -v "/var/lib/jenkins/workspace/First Pipeline@tmp:/var/lib/jenkins/workspace/First Pipeline@tmp: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 cat
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid,comm
[Pipeline] {
[Pipeline] echo
Docker Created
[Pipeline] }
$ docker stop --time=1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Prod)
[Pipeline] echo
App is Prod Ready
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Die obige Jenkins-Pipeline hat Createdas Docker-Image von Nginx. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen. Sie können sehen, dass auch das Nginx-Docker-Image aufgeführt ist.
geekflare@chef-geekflare:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 540a289bab6c 2 weeks ago 126MB
httpd latest 7d85cc3b2d80 2 months ago 154MB
redis latest f7302e4ab3a8 2 months ago 98.2MB
geekflare_mongodb latest 095d17727ca0 3 months ago 325MB
Fazit
Ich hoffe, das gibt Ihnen eine Vorstellung davon Jenkins Pipeline Vorteile und wie Sie Create eins. Das Obige ist eine einfache Demonstration, und der beste Weg, dies zu lernen, besteht darin, den Aufbau komplexer Pipelines auszuprobieren.