Einführung
Jenkins Shared Libraries ermöglichen es Teams, Pipeline-Code über viele Jobs hinweg wiederzuverwenden. Ein gängiges Bibliothekslayout platziert einfache benutzerdefinierte Schritte im Verzeichnis vars/. Eine Pipeline kann die Bibliothek anschließend laden und diese Schritte wie normale Pipeline-Funktionen aufrufen.
In diesem Lab bereiten Sie eine lokale Shared Library mit vars/sayHello.groovy vor, registrieren diese als Global Pipeline Library im Jenkins-Dashboard, erstellen einen Pipeline-Job, der sayHello aufruft, und überprüfen die Ausgabe in Jenkins.
Vorbereiten eines Shared Library Repository
In diesem Schritt bereiten Sie ein lokales Git-Repository für eine Jenkins Shared Library vor. Das Verzeichnis vars/ ist besonders: Jede darin enthaltene .groovy-Datei wird zu einem Pipeline-Schritt mit demselben Namen.
Führen Sie diesen Befehl aus, um vars/sayHello.groovy innerhalb des Jenkins-Containers zu erstellen:
docker exec jenkins bash -lc '
set -e
rm -rf /var/jenkins_home/shared-lib-src /var/jenkins_home/shared-lib.git
mkdir -p /var/jenkins_home/shared-lib-src/vars
cd /var/jenkins_home/shared-lib-src
git init -b main
git config user.email "jenkins@example.com"
git config user.name "Jenkins Shared Library"
cat > vars/sayHello.groovy <<'"'"'EOF'"'"'
def call(String name = "LabEx") {
echo "Shared library says hello to ${name}"
}
EOF
git add vars/sayHello.groovy
git commit -m "Add sayHello shared library step"
'
Veröffentlichen Sie nun das Repository als lokales Bare-Git-Repository und stellen Sie es über git://localhost/shared-lib.git bereit:
docker exec jenkins bash -lc '
set -e
cd /var/jenkins_home/shared-lib-src
git init --bare --initial-branch=main /var/jenkins_home/shared-lib.git
git remote add origin /var/jenkins_home/shared-lib.git
git push origin main
touch /var/jenkins_home/shared-lib.git/git-daemon-export-ok
if [ -f /tmp/shared-lib-git-daemon.pid ]; then
kill "$(cat /tmp/shared-lib-git-daemon.pid)" 2>/dev/null || true
rm -f /tmp/shared-lib-git-daemon.pid
fi
git daemon --reuseaddr --base-path=/var/jenkins_home --export-all --detach --pid-file=/tmp/shared-lib-git-daemon.pid /var/jenkins_home
'
Notieren Sie den Repository-Branch, den Jenkins verwenden wird:
docker exec jenkins git ls-remote git://localhost/shared-lib.git refs/heads/main | tee /home/labex/project/shared-library-repository.txt
Die Ausgabe sollte refs/heads/main enthalten.
Registrieren einer Global Pipeline Library
In diesem Schritt registrieren Sie das Repository als Jenkins Global Pipeline Library mit dem Namen labex-shared-lib. Eine Pipeline kann diesen Namen mit @Library laden.
Öffnen Sie die Desktop-Oberfläche. Firefox öffnet Jenkins automatisch. Falls nicht, rufen Sie http://localhost:8080 auf.
Vom Jenkins-Dashboard aus:
Klicken Sie auf Manage Jenkins und dann auf System.
Scrollen Sie zu Global Trusted Pipeline Libraries oder Global Pipeline Libraries. Klicken Sie auf Add.
Füllen Sie die Bibliothek mit diesen Werten aus:
Name:labex-shared-libDefault version:main- Aktivieren Sie
Allow default version to be overridden - Lassen Sie
Load implicitlydeaktiviert Retrieval method:Modern SCMSource Code Management:GitProject Repository:git://localhost/shared-lib.gitCredentials:- none -
Klicken Sie auf Save.

Führen Sie diesen Befehl aus, um die gespeicherte Bibliothekskonfiguration zu protokollieren:
docker exec jenkins sh -lc "grep -n -E '<name>labex-shared-lib</name>|git://localhost/shared-lib.git|<defaultVersion>main</defaultVersion>' /var/jenkins_home/org.jenkinsci.plugins.workflow.libs.GlobalLibraries.xml" | tee /home/labex/project/shared-library-config-lines.txt
Erstellen einer Pipeline, die die Bibliothek lädt
In diesem Schritt erstellen Sie einen Pipeline-Job namens shared-library-demo. Die Pipeline lädt labex-shared-lib und ruft den benutzerdefinierten Schritt sayHello('LabEx') aus vars/sayHello.groovy auf.
Vom Jenkins-Dashboard aus:
Klicken Sie auf New Item, geben Sie shared-library-demo ein, wählen Sie Pipeline und klicken Sie auf OK.
Scrollen Sie zum Abschnitt Pipeline. Behalten Sie bei Definition die Einstellung Pipeline script bei.
Geben Sie dieses Skript ein:
@Library('labex-shared-lib@main') _
node {
stage('Use Library') {
sayHello('LabEx')
}
}
Klicken Sie auf Save.

Führen Sie diesen Befehl aus, um das gespeicherte Pipeline-Skript zu protokollieren:
docker exec jenkins sh -lc "grep -n -E '@Library|sayHello' /var/jenkins_home/jobs/shared-library-demo/config.xml" | tee /home/labex/project/shared-library-job-config.txt
Ausführen der Shared Library Pipeline
In diesem Schritt führen Sie den Pipeline-Job aus. Jenkins ruft die Shared Library aus dem lokalen Git-Repository ab, lädt vars/sayHello.groovy und führt den benutzerdefinierten Schritt aus.
Klicken Sie auf der Job-Seite shared-library-demo auf Build Now.
Wenn Build #1 im Build-Verlauf erscheint, warten Sie, bis er abgeschlossen ist. Ein erfolgreicher Build bedeutet, dass Jenkins die Bibliothek geladen und das Pipeline-Skript ausgeführt hat.

Führen Sie diesen Befehl aus, um das Build-Ergebnis zu speichern:
curl -fsS http://localhost:8080/job/shared-library-demo/1/api/json | tr ',' '\n' | grep '"result":"SUCCESS"' | tee /home/labex/project/shared-library-build-result.txt
Überprüfen der Shared Library Ausgabe
In diesem Schritt überprüfen Sie die Jenkins-Konsolenausgabe. Der entscheidende Nachweis ist die Zeile, die von sayHello.groovy ausgegeben wird.
Öffnen Sie Build #1 und klicken Sie dann auf Console Output.
Die Konsole sollte zeigen, wie Jenkins labex-shared-lib lädt und Folgendes ausgibt:
Shared library says hello to LabEx

Führen Sie diesen Befehl aus, um denselben Konsolennachweis zu speichern:
curl -fsS http://localhost:8080/job/shared-library-demo/1/consoleText | grep 'Shared library says hello to LabEx' | tee /home/labex/project/shared-library-console-lines.txt
Zusammenfassung
Sie haben ein Jenkins Shared Library Repository vorbereitet, es als Global Pipeline Library über das Dashboard registriert, einen Pipeline-Job erstellt, der die Bibliothek lädt, und überprüft, dass ein benutzerdefinierter vars/-Schritt erfolgreich in der Jenkins-Konsolenausgabe ausgeführt wurde.