From cc0c2e23ff3d6ae4d909c09acf0a82bc14db571c Mon Sep 17 00:00:00 2001 From: soufiane Date: Tue, 2 Dec 2025 00:58:35 +0100 Subject: [PATCH] fix: reorder stages - SonarQube (quality) before Tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SonarQube analysis runs first for code quality - Tests run after for code validation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- Jenkinsfile | 62 ++++++++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3ae3a00..241d89f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -131,7 +131,34 @@ pipeline { } // ===================================================================== - // ÉTAPE 4 : LINT & TESTS + // ÉTAPE 4 : SONARQUBE - Qualité de code + // --------------------------------------------------------------------- + // Analyse statique du code pour détecter : + // - Bugs potentiels + // - Vulnérabilités de sécurité + // - Code smells (mauvaises pratiques) + // - Duplications de code + // ===================================================================== + stage('📊 SonarQube Analysis') { + agent { + docker { + image 'sonarsource/sonar-scanner-cli:latest' + args '-u root' + } + } + steps { + echo "📊 Analyse SonarQube - Qualité de code..." + withSonarQubeEnv('SonarQube') { + sh """ + sonar-scanner + """ + } + echo "✅ Analyse SonarQube terminée" + } + } + + // ===================================================================== + // ÉTAPE 5 : LINT & TESTS // --------------------------------------------------------------------- // ESLint : Vérifie le style et les erreurs de code // Jest : Exécute les tests unitaires React/Next.js @@ -151,9 +178,6 @@ pipeline { def lintStatus = sh(script: 'npm run lint', returnStatus: true) def testStatus = sh(script: 'npm test -- --coverage', returnStatus: true) - // Stash coverage report for SonarQube - stash includes: 'coverage/**', name: 'coverage', allowEmpty: true - if (lintStatus != 0) { error "❌ ESLint a échoué - Corrigez les erreurs de style" } @@ -165,36 +189,6 @@ pipeline { } } - // ===================================================================== - // ÉTAPE 5 : SONARQUBE - // --------------------------------------------------------------------- - // Analyse statique du code pour détecter : - // - Bugs potentiels - // - Vulnérabilités de sécurité - // - Code smells (mauvaises pratiques) - // - Couverture de code insuffisante - // - Duplications de code - // ===================================================================== - stage('📊 SonarQube Analysis') { - agent { - docker { - image 'sonarsource/sonar-scanner-cli:latest' - args '-u root' - } - } - steps { - // Unstash coverage report from tests - unstash 'coverage' - echo "📊 Analyse SonarQube en cours avec rapport de couverture..." - withSonarQubeEnv('SonarQube') { - sh """ - sonar-scanner - """ - } - echo "✅ Analyse SonarQube terminée" - } - } - // ===================================================================== // ÉTAPE 6 : BUILD IMAGE DOCKER // ---------------------------------------------------------------------