You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现SonarQube检测失败时GitLab CI流水线同步失败?

解决SonarQube检测失败时GitLab CI流水线不终止的问题

要实现SonarQube检测(含测试用例通过率不达标)时GitLab CI流水线同步失败,需要完成以下两项配置:

1. 调整GitLab CI的SonarQube作业配置

当前作业中allow_failure: true会让作业失败不影响流水线,同时默认的sonar-scanner不会等待质量门结果,需修改如下:

sonarqube:
  stage: sonarqube
  image: sonarsource/sonar-scanner-cli
  tags:
    - dedicated-runner1
  allow_failure: false # 作业失败时直接终止流水线
  script:
    - sonar-scanner 
        -Dsonar.projectName="${CI_PROJECT_NAME}-${CI_COMMIT_REF_SLUG}" 
        -Dsonar.projectKey="${CI_PROJECT_NAME}-${CI_COMMIT_REF_SLUG}"
        -Dsonar.qualitygate.wait=true # 等待SonarQube质量门评估结果,不达标则返回非0退出码

关键修改点:

  • 将allow_failure设为false,让GitLab CI在该作业失败时终止整个流水线
  • 添加-Dsonar.qualitygate.wait=true参数,让sonar-scanner等待SonarQube的质量门结果,若质量门不通过,扫描器会返回非0状态,触发作业失败

2. 配置SonarQube质量门规则

确保SonarQube中已将测试用例通过率设置为质量门的失败条件:

  • 登录SonarQube后台,进入目标项目的质量门设置页面
  • 添加新的质量门条件:选择「测试通过率」指标,设置阈值(例如低于80%)时标记为失败
  • 保存配置,确保该质量门绑定到目标项目

完成以上两步后,当SonarQube检测到测试用例通过率不达标时,质量门会触发失败,sonar-scanner返回非0退出码,GitLab CI作业失败,进而终止整个流水线。

内容的提问来源于stack exchange,提问作者naveen pandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:14