Fix Jenkinsfile: force recreate + health check

This commit is contained in:
soufiane 2025-10-30 23:25:47 +01:00
parent 2d89adb867
commit cd9f7613ad

46
Jenkinsfile vendored
View File

@ -4,6 +4,8 @@ pipeline {
environment { environment {
REGISTRY = "registry.wk-archi-o24a-15m-g3.fr" REGISTRY = "registry.wk-archi-o24a-15m-g3.fr"
IMAGE_NAME = "the-tip-top-backend" IMAGE_NAME = "the-tip-top-backend"
APP_PATH = "/srv/devops/the-tip-top"
DEPLOY_HOST = "localhost"
} }
stages { stages {
@ -18,10 +20,10 @@ pipeline {
stage('Build Docker image') { stage('Build Docker image') {
steps { steps {
echo "🐳 Construction de limage Docker backend..." echo "🐳 Construction de limage Docker backend..."
sh """ sh '''
docker build -t ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} . docker build -t $REGISTRY/$IMAGE_NAME:${BUILD_NUMBER} .
docker tag ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} ${REGISTRY}/${IMAGE_NAME}:latest docker tag $REGISTRY/$IMAGE_NAME:${BUILD_NUMBER} $REGISTRY/$IMAGE_NAME:latest
""" '''
} }
} }
@ -29,11 +31,11 @@ pipeline {
steps { steps {
echo "📤 Envoi de limage vers le registre privé..." echo "📤 Envoi de limage vers le registre privé..."
withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) { withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) {
sh """ sh '''
echo $REG_PASS | docker login ${REGISTRY} -u $REG_USER --password-stdin echo "$REG_PASS" | docker login $REGISTRY -u $REG_USER --password-stdin
docker push ${REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER} docker push $REGISTRY/$IMAGE_NAME:${BUILD_NUMBER}
docker push ${REGISTRY}/${IMAGE_NAME}:latest docker push $REGISTRY/$IMAGE_NAME:latest
""" '''
} }
} }
} }
@ -41,20 +43,32 @@ pipeline {
stage('Deploy') { stage('Deploy') {
steps { steps {
echo "🚀 Déploiement du backend..." echo "🚀 Déploiement du backend..."
sh """ sh '''
if [ ! -f $APP_PATH/docker-compose.yml ]; then
echo "❌ Fichier docker-compose.yml introuvable !" >&2
exit 1
fi
cd $APP_PATH
docker compose pull backend docker compose pull backend
docker compose up -d --force-recreate backend docker compose up -d --force-recreate backend
""" '''
} }
} }
stage('Health Check') { stage('Health Check') {
steps { steps {
echo "🩺 Vérification du déploiement..." echo "🩺 Vérification du backend après déploiement..."
script { 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() def statusCode = sh(
if (code != "200") { script: "curl -k -s -o /dev/null -w '%{http_code}' https://api.dsp5-archi-o24a-15m-g3.fr || echo 000",
error "Le backend ne répond pas correctement (code HTTP ${code})" returnStdout: true
).trim()
if (statusCode != '200') {
error("❌ Health check échoué - code HTTP ${statusCode}")
} else {
echo "✅ Health check réussi - backend opérationnel !"
} }
} }
} }
@ -63,7 +77,7 @@ pipeline {
post { post {
success { success {
echo "✅ Déploiement du backend réussi." echo "✅ Déploiement backend terminé avec succès !"
} }
failure { failure {
echo "❌ Échec du pipeline backend." echo "❌ Échec du pipeline backend."