Un pipeline CI qui ne bloque pas les commits de mauvaise qualité est un pipeline décoratif. Voici comment configurer les Quality Gates de SonarQube pour qu’elles mordent vraiment.
Nouveau code vs code existant : la clé
SonarQube distingue le code existant (legacy, potentiellement problématique) du nouveau code (ce qui a changé depuis une date de référence). La stratégie : être strict sur le nouveau code, tolérer temporairement la dette existante.
Configurer une Quality Gate efficace
Conditions sur le NOUVEAU CODE uniquement :
- Coverage < 75% → FAILED
- Bugs > 0 → FAILED (Rating < A)
- Vulnerabilities > 0 → FAILED (Rating < A)
- Security Hotspots unreviewed > 0 → FAILED
- Code Smells > 5% → WARNING
La règle fondamentale : zéro bug, zéro vulnérabilité sur le nouveau code.
Intégration GitLab CI : le paramètre critique
sonarqube-check:
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
GIT_DEPTH: 0 # historique complet indispensable
script:
- sonar-scanner
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.sources=src
-Dsonar.python.coverage.reportPaths=coverage.xml
-Dsonar.qualitygate.wait=true # ← paramètre clé
-Dsonar.qualitygate.timeout=300
allow_failure: false
Sans qualitygate.wait=true, le scanner lance l’analyse et rend la main immédiatement — le pipeline passe toujours vert même si SonarQube détecte des problèmes.
Intégration Jenkins
stage('Quality Gate') {
steps {
timeout(time: 5, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
// abortPipeline: true → arrête si gate FAILED
}
}
}
Décoration des merge requests
Configurez l’intégration GitLab dans Administration → ALM Integrations. SonarQube postera automatiquement un commentaire sur chaque MR avec les problèmes détectés et un lien vers l’analyse complète.
Les pièges à éviter
- Gate trop permissive : si elle passe toujours, elle ne protège rien
- Gate trop stricte : génère de la frustration et se fait contourner avec
allow_failure: true - Oublier
GIT_DEPTH: 0: un clone shallow fausse le calcul du périmètre nouveau code
Notre formation SonarQube couvre la configuration complète des Quality Gates avec des cas pratiques sur des codebases réelles.