pipeline { agent any environment { DOCKER_REGISTRY = 'git.v0id.ovh' ORGANIZATION = "n3wt-innov" APP_NAME = 'n3wt-school' } // Déclencher uniquement sur les tags triggers { issueCommentTrigger('.*deploy.*') } stages { stage('Vérification du Tag') { when { expression { env.TAG_NAME != null } } steps { script { // Extraire la version du tag env.VERSION = env.TAG_NAME echo "Version détectée: ${env.VERSION}" } } } stage('Build Docker Images') { when { expression { env.TAG_NAME != null } } steps { script { // Donner les permissions d'exécution au script sh 'chmod +x ./ci-scripts/makeDocker.sh' // Exécuter le script avec la version sh """ ./ci-scripts/makeDocker.sh ${env.VERSION} """ } } } stage('Push sur Registry') { when { expression { env.TAG_NAME != null } } steps { script { withCredentials([usernamePassword( credentialsId: 'docker-registry-credentials', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS' )]) { // Login au registry sh "docker login ${DOCKER_REGISTRY} -u ${REGISTRY_USER} -p ${REGISTRY_PASS}" // Push des images sh """ docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/frontend:${env.VERSION} docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/backend:${env.VERSION} docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/frontend:latest docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/backend:latest """ } } } } } post { success { echo "Build et push des images Docker réussis pour la version ${env.VERSION}" } failure { echo "Échec du build ou du push des images Docker" } always { // Nettoyage sh 'docker system prune -f' } } }