Introduction
Les bibliothèques partagées Jenkins (Shared Libraries) permettent aux équipes de réutiliser du code Pipeline à travers de nombreux jobs. Une structure de bibliothèque courante place les étapes personnalisées simples dans le répertoire vars/. Un Pipeline peut ensuite charger la bibliothèque et appeler ces étapes comme des fonctions Pipeline standard.
Dans ce laboratoire, vous allez préparer une bibliothèque partagée locale avec vars/sayHello.groovy, l'enregistrer en tant que bibliothèque Pipeline globale depuis le tableau de bord Jenkins, créer un job Pipeline qui appelle sayHello et vérifier le résultat dans Jenkins.
Préparer un dépôt de bibliothèque partagée
Dans cette étape, vous allez préparer un dépôt Git local pour une bibliothèque partagée Jenkins. Le répertoire vars/ est spécial : chaque fichier .groovy qu'il contient devient une étape de Pipeline portant le même nom.
Exécutez cette commande pour créer vars/sayHello.groovy à l'intérieur du conteneur Jenkins :
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"
'
Publiez maintenant le dépôt en tant que dépôt Git nu (bare) local et exposez-le via git://localhost/shared-lib.git :
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
'
Enregistrez la branche du dépôt que Jenkins utilisera :
docker exec jenkins git ls-remote git://localhost/shared-lib.git refs/heads/main | tee /home/labex/project/shared-library-repository.txt
La sortie doit inclure refs/heads/main.
Enregistrer une bibliothèque Pipeline globale
Dans cette étape, vous allez enregistrer le dépôt en tant que bibliothèque Pipeline globale Jenkins nommée labex-shared-lib. Un Pipeline peut charger ce nom avec @Library.
Ouvrez l'interface de bureau. Firefox ouvre Jenkins automatiquement. Si ce n'est pas le cas, ouvrez http://localhost:8080.
Depuis le tableau de bord Jenkins :
Cliquez sur Manage Jenkins, puis sur System.
Faites défiler jusqu'à Global Trusted Pipeline Libraries ou Global Pipeline Libraries. Cliquez sur Add.
Remplissez la bibliothèque avec ces valeurs :
Name:labex-shared-libDefault version:main- Cochez
Allow default version to be overridden - Laissez
Load implicitlydécoché Retrieval method:Modern SCMSource Code Management:GitProject Repository:git://localhost/shared-lib.gitCredentials:- none -
Cliquez sur Save.

Exécutez cette commande pour enregistrer la configuration de la bibliothèque sauvegardée :
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
Créer un Pipeline qui charge la bibliothèque
Dans cette étape, vous allez créer un job Pipeline nommé shared-library-demo. Le Pipeline charge labex-shared-lib et appelle l'étape personnalisée sayHello('LabEx') définie dans vars/sayHello.groovy.
Depuis le tableau de bord Jenkins :
Cliquez sur New Item, entrez shared-library-demo, sélectionnez Pipeline, puis cliquez sur OK.
Faites défiler jusqu'à la section Pipeline. Gardez Definition sur Pipeline script.
Entrez ce script :
@Library('labex-shared-lib@main') _
node {
stage('Use Library') {
sayHello('LabEx')
}
}
Cliquez sur Save.

Exécutez cette commande pour enregistrer le script Pipeline sauvegardé :
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
Exécuter le Pipeline de la bibliothèque partagée
Dans cette étape, vous allez exécuter le job Pipeline. Jenkins récupérera la bibliothèque partagée depuis le dépôt Git local, chargera vars/sayHello.groovy et exécutera l'étape personnalisée.
Sur la page du job shared-library-demo, cliquez sur Build Now.
Lorsque le build #1 apparaît dans l'historique des builds, attendez qu'il se termine. Un build réussi signifie que Jenkins a chargé la bibliothèque et exécuté le script Pipeline.

Exécutez cette commande pour enregistrer le résultat du build :
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
Inspecter la sortie de la bibliothèque partagée
Dans cette étape, vous allez inspecter la sortie de la console Jenkins. La preuve clé est la ligne imprimée par sayHello.groovy.
Ouvrez le build #1, puis cliquez sur Console Output.
La console devrait montrer Jenkins chargeant labex-shared-lib et affichant :
Shared library says hello to LabEx

Exécutez cette commande pour enregistrer la même preuve dans la console :
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
Résumé
Vous avez préparé un dépôt de bibliothèque partagée Jenkins, l'avez enregistré en tant que bibliothèque Pipeline globale depuis le tableau de bord, créé un job Pipeline qui charge la bibliothèque et vérifié qu'une étape personnalisée vars/ s'est exécutée avec succès dans la sortie de la console Jenkins.