pipeline { agent { docker { image 'node:20' args '-v /var/run/docker.sock:/var/run/docker.sock' } } environment { APP_NAME = "the-tip-top-backend" REGISTRY = "registry.wk-archi-o24a-15m-g3.fr" IMAGE = "${REGISTRY}/${APP_NAME}:${BUILD_NUMBER}" DEPLOY_PATH = "/srv/devops/the-tip-top" } stages { stage('Checkout') { steps { echo "📦 Récupération du code source depuis Gitea..." checkout scm } } stage('Install dependencies') { steps { echo "📦 Installation des dépendances NPM..." sh 'npm ci' } } stage('Build Docker image') { steps { echo "🐳 Construction et tag de l’image Docker..." sh 'docker build -t ${IMAGE} .' } } stage('Push to Registry') { steps { echo "📤 Envoi de l’image vers le registry privé..." withCredentials([usernamePassword(credentialsId: 'registry-creds', usernameVariable: 'USER', passwordVariable: 'PASS')]) { sh 'echo $PASS | docker login $REGISTRY -u $USER --password-stdin' sh 'docker push $IMAGE' } } } stage('Deploy') { steps { echo "🚀 Déploiement du backend via Docker Compose..." sh """ cd ${DEPLOY_PATH} docker compose pull backend docker compose up -d --no-deps --build backend """ } } } post { success { echo "✅ Déploiement du backend réussi !" } failure { echo "❌ Échec du pipeline backend." } } }