From 303307092f16f2da02fe20e5ac0c17a460876f0f Mon Sep 17 00:00:00 2001 From: soufiane Date: Tue, 4 Nov 2025 15:17:49 +0100 Subject: [PATCH] Fix Jenkinsfile syntax (clean comments) --- Jenkinsfile | 96 ++++++++--------------------------------------------- 1 file changed, 13 insertions(+), 83 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 350cd871..4329c5d9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,14 +1,11 @@ pipeline { agent any - // πŸ” VΓ©rifie toutes les 2 minutes si du nouveau code a Γ©tΓ© poussΓ© - triggers { } - parameters { choice( name: 'ENV', choices: ['dev', 'preprod', 'prod'], - description: 'Choisir l’environnement de dΓ©ploiement' + description: 'Choisir lenvironnement de dΓ©ploiement' ) } @@ -19,14 +16,12 @@ pipeline { stages { - // ─────────────────────────────── - // 1️⃣ Init β€” DΓ©tection automatique de l’environnement - // ─────────────────────────────── + // Stage 1: Initialisation stage('Init') { steps { script { def currentBranch = sh(script: "git rev-parse --abbrev-ref HEAD", returnStdout: true).trim() - echo "🧭 Branche dΓ©tectΓ©e : ${currentBranch}" + echo "Branche dΓ©tectΓ©e : ${currentBranch}" if (["dev", "preprod", "main"].contains(currentBranch)) { env.ENV = (currentBranch == "main") ? "prod" : currentBranch @@ -36,31 +31,18 @@ pipeline { env.TAG = "${env.ENV}-latest" env.DEPLOY_PATH = "/srv/devops/the-tip-top/${env.ENV}" - - echo """ - 🌍 Environnement = ${env.ENV} - 🏷️ Tag Docker = ${env.TAG} - πŸ“‚ Chemin de dΓ©ploiement = ${env.DEPLOY_PATH} - """ - - sh "ls -l ${env.DEPLOY_PATH} || echo '⚠️ Dossier non accessible depuis Jenkins'" } } } - // ─────────────────────────────── - // 2️⃣ Checkout du code - // ─────────────────────────────── + // Stage 2: Checkout du code stage('Checkout') { steps { - echo "πŸ“¦ RΓ©cupΓ©ration du code source depuis Gitea..." checkout scm } } - // ─────────────────────────────── - // 3️⃣ Tests & QualitΓ© - // ─────────────────────────────── + // Stage 3: Tests et QualitΓ© stage('Tests & QualitΓ©') { agent { docker { @@ -69,21 +51,17 @@ pipeline { } } steps { - echo "πŸ§ͺ Lancement des tests et analyse de code..." sh ''' npm ci - npm run lint || echo "⚠️ Erreurs de lint dΓ©tectΓ©es" - npm test || echo "⚠️ Tests Γ©chouΓ©s β€” vΓ©rifier les logs" + npm run lint || echo "Erreurs de lint dΓ©tectΓ©es" + npm test || echo "Tests Γ©chouΓ©s" ''' } } - // ─────────────────────────────── - // 4️⃣ Build Docker image - // ─────────────────────────────── + // Stage 4: Build Docker image stage('Build Docker image') { steps { - echo "🐳 Construction de l’image Docker backend..." dir('the-tip-top-backend') { sh """ docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:${TAG} . @@ -93,12 +71,9 @@ pipeline { } } - // ─────────────────────────────── - // 5️⃣ Push vers le registre privΓ© - // ─────────────────────────────── + // Stage 5: Push vers le registre privΓ© stage('Push to Registry') { steps { - echo "πŸ“€ Envoi de l’image vers le registre..." withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) { sh """ echo "$REG_PASS" | docker login ${REGISTRY_URL} -u "$REG_USER" --password-stdin @@ -109,54 +84,20 @@ pipeline { } } - // ─────────────────────────────── - // 6️⃣ Backup avant dΓ©ploiement - // ─────────────────────────────── - stage('Backup Before Deploy') { - steps { - echo "πŸ’Ύ ExΓ©cution du script de sauvegarde..." - sh ''' - if [ -f /srv/devops/the-tip-top/backup.sh ]; then - bash /srv/devops/the-tip-top/backup.sh - else - echo "⚠️ Aucun script backup.sh trouvΓ©." - fi - ''' - } - } - - // ─────────────────────────────── - // 7️⃣ DΓ©ploiement - // ─────────────────────────────── + // Stage 6: DΓ©ploiement stage('Deploy') { steps { - echo "πŸš€ DΓ©ploiement du backend sur ${env.ENV}..." sh """ - echo "πŸ“‚ DEPLOY_PATH utilisΓ© : ${DEPLOY_PATH}" - - if [ ! -f "${DEPLOY_PATH}/docker-compose.yml" ]; then - echo "❌ Fichier docker-compose.yml introuvable dans ${DEPLOY_PATH}" - ls -l ${DEPLOY_PATH} || echo "⚠️ Impossible de lister le contenu." - exit 1 - fi - cd "${DEPLOY_PATH}" - - echo "πŸ“¦ Pull de l'image Docker depuis le registre..." docker compose pull backend - - echo "πŸ”„ RecrΓ©ation du conteneur backend..." docker compose up -d --force-recreate backend """ } } - // ─────────────────────────────── - // 8️⃣ VΓ©rification de santΓ© (via /health) - // ─────────────────────────────── + // Stage 7: Health Check stage('Health Check') { steps { - echo "🩺 VΓ©rification du backend aprΓ¨s dΓ©ploiement..." script { def domain = (env.ENV == 'dev') ? "api.dev.dsp5-archi-o24a-15m-g3.fr" : (env.ENV == 'preprod') ? "api.preprod.dsp5-archi-o24a-15m-g3.fr" : @@ -166,25 +107,14 @@ pipeline { for (int i = 1; i <= 10; i++) { statusCode = sh(script: "curl -k -s -o /dev/null -w '%{http_code}' https://${domain}/health || echo 000", returnStdout: true).trim() if (statusCode in ['200', '301', '302']) { - echo "βœ… Backend ${env.ENV} opΓ©rationnel (HTTP ${statusCode})" + echo "Backend ${env.ENV} OK (${statusCode})" return } - - echo "⏳ Tentative ${i}/10 β†’ HTTP ${statusCode}" sleep 5 } - error("❌ Health check Γ©chouΓ© - code HTTP ${statusCode}") + error("Health check Γ©chouΓ© (${statusCode})") } } } } - - post { - success { - echo "βœ… Pipeline backend ${env.ENV} terminΓ© avec succΓ¨s !" - } - failure { - echo "❌ Γ‰chec du pipeline backend pour ${env.ENV}." - } - } }