// Necessites credencials vàlides per a Docker Hub // Necessites https://plugins.jenkins.io/docker-workflow/ instal·lat a la teva instància Jenkins pipeline { // Defineix l'agent on s'executarà el pipeline agent { node { label 'docker' // L'agent ha de tenir Docker Engine instal·lat } } // Defineix variables d'entorn disponibles per a tot el pipeline environment { // Usuari de Docker Hub DOCKER_HUB_USER='guillemhs' // Nom de la imatge Docker amb format: usuari/nom-imatge IMAGE_NAME="${DOCKER_HUB_USER}/jenkins-ubuntu-agent" // ID de les credencials de Docker Hub guardades a Jenkins REGISTRY_CRED_ID='docker-credentials' // Executem una comanda shell per obtenir la data actual (format YYYY.MM.DD) // returnStdout: true retorna l'output de la comanda // trim() elimina espais en blanc DATA = sh(returnStdout: true, script: 'date +%Y.%m.%d').trim() // Crea un tag combinant la data i el número de build (ex: 2026.04.17.5) TAG="${DATA}.${env.BUILD_NUMBER}" } // Defineix les etapes principals del pipeline stages { // Etapa 1: Descarrega el codi del repositori stage('Checkout') { steps { // Clona el codi del repositori Git checkout scm } } // Etapa 2: Construeix la imatge Docker stage('Docker Build') { steps { script{ echo "Build image ..." // Construeix la imatge Docker usant el Dockerfile especificat // -f DockerfileAgent2404: Especifica quin Dockerfile usar // .: Usa el directori actual com a context de construcció docker.build("${IMAGE_NAME}:${TAG}","-f DockerfileAgent2404 .") } } } // Etapa 3: Publica la imatge a Docker Hub stage('Docker Push') { steps{ script{ // Autenticació amb Docker Hub usant les credencials guardades docker.withRegistry('',REGISTRY_CRED_ID){ // Obté la referència de la imatge construïda def app = docker.image("${IMAGE_NAME}:${TAG}") echo "Pushing image to Docker Hub ..." // Publica la imatge amb el tag de data i build number app.push("${TAG}") // Publica la imatge amb el tag 'latest' (versió més recent) app.push("latest") } } } } } // Accions a executar sempre al final del pipeline post{ always{ // Elimina la imatge Docker local amb el tag específic (|| true ignora errors) sh "docker rmi ${IMAGE_NAME}:${TAG} || true" // Elimina la imatge Docker local amb el tag 'latest' sh "docker rmi ${IMAGE_NAME}:latest || true" // cleanWs() comentat: Podria limpiar l'espai de treball si es descomentar } } }