Added comments
This commit is contained in:
@@ -1,55 +1,82 @@
|
||||
// You need a valid credentials for Docker Hub
|
||||
// You need https://plugins.jenkins.io/docker-workflow/ on your jenkins instance
|
||||
// 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' //Agent needs to have Docker Engine installed
|
||||
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-alpine-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 i la guardem com a variable
|
||||
// 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 {
|
||||
// Get some code from a GIT repository
|
||||
// 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 DockerfileAgentAlpine: Especifica el Dockerfile per a Alpine
|
||||
// .: Usa el directori actual com a context de construcció
|
||||
docker.build("${IMAGE_NAME}:${TAG}","-f DockerfileAgentAlpine .")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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{
|
||||
//cleanWs()
|
||||
// cleanWs() comentat: Podria limpiar l'espai de treball si es descomentar
|
||||
// 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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user