Introducción
Las bibliotecas compartidas (Shared Libraries) de Jenkins permiten a los equipos reutilizar código de Pipeline en múltiples trabajos. Una estructura común de biblioteca coloca los pasos personalizados simples en el directorio vars/. De esta manera, un Pipeline puede cargar la biblioteca y llamar a esos pasos como si fueran funciones normales de Pipeline.
En este laboratorio, preparará una biblioteca compartida local con vars/sayHello.groovy, la registrará como una Global Pipeline Library desde el panel de control de Jenkins, creará un trabajo de Pipeline que llame a sayHello y verificará la salida en Jenkins.
Preparar un repositorio de biblioteca compartida
En este paso, preparará un repositorio Git local para una biblioteca compartida de Jenkins. El directorio vars/ es especial: cada archivo .groovy dentro de él se convierte en un paso de Pipeline con el mismo nombre.
Ejecute este comando para crear vars/sayHello.groovy dentro del contenedor de 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"
'
Ahora, publique el repositorio como un repositorio Git "bare" local y expóngalo a través de 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
'
Registre la rama del repositorio que utilizará Jenkins:
docker exec jenkins git ls-remote git://localhost/shared-lib.git refs/heads/main | tee /home/labex/project/shared-library-repository.txt
La salida debería incluir refs/heads/main.
Registrar una Global Pipeline Library
En este paso, registrará el repositorio como una Global Pipeline Library de Jenkins llamada labex-shared-lib. Un Pipeline puede cargar este nombre mediante @Library.
Abra la interfaz de escritorio. Firefox abrirá Jenkins automáticamente. Si no es así, abra http://localhost:8080.
Desde el panel de control de Jenkins:
Haga clic en Manage Jenkins y luego en System.
Desplácese hasta Global Trusted Pipeline Libraries o Global Pipeline Libraries. Haga clic en Add.
Complete la biblioteca con estos valores:
Name:labex-shared-libDefault version:main- Marque
Allow default version to be overridden - Deje
Load implicitlydesmarcado Retrieval method:Modern SCMSource Code Management:GitProject Repository:git://localhost/shared-lib.gitCredentials:- none -
Haga clic en Save.

Ejecute este comando para registrar la configuración de la biblioteca guardada:
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
Crear un Pipeline que cargue la biblioteca
En este paso, creará un trabajo de Pipeline llamado shared-library-demo. El Pipeline cargará labex-shared-lib y llamará al paso personalizado sayHello('LabEx') definido en vars/sayHello.groovy.
Desde el panel de control de Jenkins:
Haga clic en New Item, ingrese shared-library-demo, seleccione Pipeline y haga clic en OK.
Desplácese hasta la sección Pipeline. Mantenga Definition como Pipeline script.
Ingrese este script:
@Library('labex-shared-lib@main') _
node {
stage('Use Library') {
sayHello('LabEx')
}
}
Haga clic en Save.

Ejecute este comando para registrar el script de Pipeline guardado:
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
Ejecutar el Pipeline de la biblioteca compartida
En este paso, ejecutará el trabajo de Pipeline. Jenkins obtendrá la biblioteca compartida del repositorio Git local, cargará vars/sayHello.groovy y ejecutará el paso personalizado.
En la página del trabajo shared-library-demo, haga clic en Build Now.
Cuando aparezca la compilación #1 en el historial, espere a que finalice. Una compilación exitosa significa que Jenkins cargó la biblioteca y ejecutó el script de Pipeline.

Ejecute este comando para guardar el resultado de la compilación:
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
Inspeccionar la salida de la biblioteca compartida
En este paso, inspeccionará la salida de la consola de Jenkins. La evidencia clave es la línea impresa por sayHello.groovy.
Abra la compilación #1 y haga clic en Console Output.
La consola debería mostrar a Jenkins cargando labex-shared-lib e imprimiendo:
Shared library says hello to LabEx

Ejecute este comando para guardar la misma evidencia de la consola:
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
Resumen
Ha preparado un repositorio de biblioteca compartida de Jenkins, lo ha registrado como una Global Pipeline Library desde el panel de control, ha creado un trabajo de Pipeline que cargó la biblioteca y ha verificado que un paso personalizado de vars/ se ejecutó correctamente en la salida de la consola de Jenkins.