pipeline { agent any environment { REGISTRY = "registry.wk-archi-o24a-15m-g3.fr" IMAGE_NAME = "the-tip-top-backend" } stages { stage('Checkout') { steps { echo "📩 RĂ©cupĂ©ration du code source..." checkout scm } } stage('Build Docker image') { steps { echo "🐳 Construction de l’image Docker backend..." sh """ docker build -t ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} . docker tag ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} ${REGISTRY}/${IMAGE_NAME}:latest """ } } stage('Push to Registry') { steps { echo "đŸ“€ Envoi de l’image vers le registre privĂ©..." withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) { sh """ echo $REG_PASS | docker login ${REGISTRY} -u $REG_USER --password-stdin docker push ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} docker push ${REGISTRY}/${IMAGE_NAME}:latest """ } } } stage('Deploy') { steps { echo "🚀 DĂ©ploiement du backend..." sh """ docker compose pull backend docker compose up -d --force-recreate backend """ } } stage('Health Check') { steps { echo "đŸ©ș VĂ©rification du dĂ©ploiement..." script { def code = sh(script: "curl -s -o /dev/null -w '%{http_code}' https://api.dsp5-archi-o24a-15m-g3.fr || echo 000", returnStdout: true).trim() if (code != "200") { error "Le backend ne rĂ©pond pas correctement (code HTTP ${code})" } } } } } post { success { echo "✅ DĂ©ploiement du backend rĂ©ussi." } failure { echo "❌ Échec du pipeline backend." } } }