Pipeline 中集成 SonarQube 扫描需配置插件、全局工具及服务器信息,代码库中提供 sonar-project.properties 文件定义项目标识、源码路径等,Pipeline 使用 withSonarQubeEnv 调用 sonar-scanner,并可选 waitForQualityGate 等待质量门禁结果。

直接在 Pipeline 中调用扫描工具,核心是配置好工具路径、传参准确、并让结果能被 Jenkins 和 SonarQube 正确识别和反馈。
准备基础环境
先确保三件事到位:Jenkins 已安装 SonarQube Scanner for Jenkins 插件;全局工具配置里添加了 SonarScanner(可自动安装或指定本地路径);系统设置中配置了 SonarQube Server(填 URL 和 token,token 从 SonarQube → My Account → Security → Tokens 页面生成)。
项目级配置文件要入库
在代码仓库根目录放一个 sonar-project.properties 文件,它比命令行参数更稳定、易维护。关键项包括:
-
sonar.projectKey:唯一标识,建议用
org:repo-name格式 -
sonar.sources:源码路径,如
src/main/java或src -
sonar.exclusions:排除干扰项,例如
**/node_modules/**,**/dist/**,**/target/** - sonar.javascript.lcov.reportPaths(JS项目)或 sonar.coverage.jacoco.xmlReportPaths(Java项目):关联测试覆盖率报告
Pipeline 脚本写法
推荐使用 withSonarQubeEnv 块封装扫描步骤,避免硬编码 token:
- 指定 agent 和工具:
tools { sonarQube 'SonarQubeScanner' } - 在 stage 中调用:
withSonarQubeEnv('Your-Sonar-Server-Name') { sh 'sonar-scanner' } - 若没放
sonar-project.properties,就用 -D 参数传参,例如:sh "sonar-scanner -Dsonar.projectKey=my-app -Dsonar.sources=src" - 想卡住流水线等质量门禁结果?加
waitForQualityGate(),它依赖 SonarQube 的 Webhook 回调(需在 SonarQube → Administration → Configuration → Webhooks 中配 Jenkins 地址)
扫描结果联动与验证
扫描完成后,去 SonarQube UI 查看项目仪表盘是否更新;Jenkins 控制台日志应出现 EXECUTION SUCCESS;如果用了 waitForQualityGate(),失败时 Pipeline 会红,且 SonarQube 里能看到 Quality Gate 状态(如 “Passed” 或具体失败规则)。


















