Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Wie erstelle ich meine erste Jenkins-Pipeline?

Jenkins Hosting
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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

Why 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, muss der Code bei jeder Aktualisierung kontinuierlich erstellt, getestet und bereitgestellt werden. Hier kommt die Jenkins Pipeline ins Spiel.

In DevOpsDie kontinuierliche Integration und kontinuierliche Bereitstellung (CI / CD) wird ü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.

What is 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 den 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.

Create a 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.

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.

JenkinsDateicode

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.

  • Das 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 zugewiesen, um die Pipeline auf einem Knoten auszuführen und einen Arbeitsbereich für die Pipeline zuzuweisen.
  • A Stufe ist ein Block, der Schritte zum Erstellen, Testen und Bereitstellen der Anwendung enthält. Stufen werden verwendet, um die Jenkins-Pipeline-Prozesse zu visualisieren.
  • A 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.

Bauen Sie jetzt

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).

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.

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 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.

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

Conclusion

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, besteht darin, komplexe Pipelines zu bauen.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder