Introdução
As Bibliotecas Compartilhadas (Shared Libraries) do Jenkins permitem que as equipes reutilizem código de Pipeline em diversos jobs. Um layout comum de biblioteca coloca passos personalizados simples no diretório vars/. Um Pipeline pode então carregar a biblioteca e chamar esses passos como se fossem funções normais de Pipeline.
Neste laboratório, você preparará uma biblioteca compartilhada local com vars/sayHello.groovy, irá registrá-la como uma Global Pipeline Library no painel do Jenkins, criará um job de Pipeline que chama sayHello e verificará a saída no Jenkins.
Preparar um Repositório de Biblioteca Compartilhada
Neste passo, você preparará um repositório Git local para uma Biblioteca Compartilhada do Jenkins. O diretório vars/ é especial: cada arquivo .groovy nele se torna um passo de Pipeline com o mesmo nome.
Execute este comando para criar vars/sayHello.groovy dentro do container do 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"
'
Agora, publique o repositório como um repositório Git bare local e exponha-o atravé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 o branch do repositório que o Jenkins utilizará:
docker exec jenkins git ls-remote git://localhost/shared-lib.git refs/heads/main | tee /home/labex/project/shared-library-repository.txt
A saída deve incluir refs/heads/main.
Registrar uma Global Pipeline Library
Neste passo, você registrará o repositório como uma Global Pipeline Library do Jenkins chamada labex-shared-lib. Um Pipeline pode carregar este nome com @Library.
Abra a interface Desktop. O Firefox abre o Jenkins automaticamente. Caso não abra, acesse http://localhost:8080.
No painel do Jenkins:
Clique em Manage Jenkins e, em seguida, clique em System.
Role até Global Trusted Pipeline Libraries ou Global Pipeline Libraries. Clique em Add.
Preencha a biblioteca com estes valores:
Name:labex-shared-libDefault version:main- Marque
Allow default version to be overridden - Deixe
Load implicitlydesmarcado Retrieval method:Modern SCMSource Code Management:GitProject Repository:git://localhost/shared-lib.gitCredentials:- none -
Clique em Save.

Execute este comando para registrar a configuração da biblioteca salva:
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
Criar um Pipeline que Carrega a Biblioteca
Neste passo, você criará um job de Pipeline chamado shared-library-demo. O Pipeline carrega a labex-shared-lib e chama o passo personalizado sayHello('LabEx') definido em vars/sayHello.groovy.
No painel do Jenkins:
Clique em New Item, digite shared-library-demo, selecione Pipeline e clique em OK.
Role até a seção Pipeline. Mantenha Definition como Pipeline script.
Insira este script:
@Library('labex-shared-lib@main') _
node {
stage('Use Library') {
sayHello('LabEx')
}
}
Clique em Save.

Execute este comando para registrar o script do Pipeline salvo:
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
Executar o Pipeline da Biblioteca Compartilhada
Neste passo, você executará o job de Pipeline. O Jenkins buscará a biblioteca compartilhada no repositório Git local, carregará o arquivo vars/sayHello.groovy e executará o passo personalizado.
Na página do job shared-library-demo, clique em Build Now.
Quando o build #1 aparecer no histórico de builds, aguarde até que ele termine. Um build bem-sucedido significa que o Jenkins carregou a biblioteca e executou o script do Pipeline.

Execute este comando para salvar o resultado do 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
Inspecionar a Saída da Biblioteca Compartilhada
Neste passo, você inspecionará a saída do console do Jenkins. A evidência principal é a linha impressa pelo sayHello.groovy.
Abra o build #1 e clique em Console Output.
O console deve mostrar o Jenkins carregando a labex-shared-lib e imprimindo:
Shared library says hello to LabEx

Execute este comando para salvar a mesma evidência do 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
Resumo
Você preparou um repositório de Biblioteca Compartilhada do Jenkins, registrou-o como uma Global Pipeline Library a partir do painel, criou um job de Pipeline que carregou a biblioteca e verificou que um passo personalizado em vars/ foi executado com sucesso na saída do console do Jenkins.