SonarQubeQualitéCI/CDDevSecOps

SonarQube Quality Gates : bloquer les mauvais commits avant la production

5 juillet 2026 · Sphinx-Digital

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.