fix: reorder stages - SonarQube (quality) before Tests
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
27965e4cc2
commit
cc0c2e23ff
62
Jenkinsfile
vendored
62
Jenkinsfile
vendored
|
|
@ -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
|
// ESLint : Vérifie le style et les erreurs de code
|
||||||
// Jest : Exécute les tests unitaires React/Next.js
|
// Jest : Exécute les tests unitaires React/Next.js
|
||||||
|
|
@ -151,9 +178,6 @@ pipeline {
|
||||||
def lintStatus = sh(script: 'npm run lint', returnStatus: true)
|
def lintStatus = sh(script: 'npm run lint', returnStatus: true)
|
||||||
def testStatus = sh(script: 'npm test -- --coverage', 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) {
|
if (lintStatus != 0) {
|
||||||
error "❌ ESLint a échoué - Corrigez les erreurs de style"
|
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
|
// ÉTAPE 6 : BUILD IMAGE DOCKER
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user