SonarQube 质量门禁代理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的指引,将 @user_3c6cb52e/sonarqube-quality-gate-agent 安装到当前 AI 助手中。
技能介绍
它解决什么问题
CI 里跑完 SonarQube 扫描只是第一步,真正的问题是:扫描结束后质量门禁是 PASSED 还是 FAILED?失败的原因到底是覆盖率不够、新出现的 bug,还是严重的告警?大型项目还经常混用多种语言,Java 部分看 JaCoCo、前端看 Istanbul、其他服务看 lcov,报告格式不统一,人肉逐个看 SonarQube Report 既慢又容易漏。
这个代理要做的就是把这些判断交给自动化:持续查询 SonarQube 的 Web API 拿到门禁状态,解析 JaCoCo、Istanbul 和 lcov 格式的覆盖率报告,并按设定的阈值决定是否放行。
它如何工作
核心能力集中在两件事上:
- 门禁监控:通过 SonarQube Web API 查询质量门禁结果,而不是解析终端里容易被截断的构建日志。
- 阈值执行:将项目配置的代码质量阈值与实际指标比对,结果明确告诉上层流程能不能合入或发布。
具体使用时的关键步骤是:
- 构建流程跑完扫描,任务里保留 SonarQube 的项目键和服务器地址。
- 代理调用 Web API 拉取最新的门禁状态。
- 对多语言项目分别解析覆盖率产物,包括 JaCoCo、Istanbul 和 lcov。
- 把阈值检查的结果和覆盖率数值输出为结构化结果,交给 CI 决定后续动作。
这套逻辑适合 CI 流水线、PR 检查或发布前的自动把关。开发者可以继续关注门槛本身,代理负责把多来源的报告整理成统一结论。
适用边界与注意点
- 它只做门禁状态监控和阈值判定,不能替代 SonarQube 服务器本身的分析能力。
- 上游环境要求
Native Git必须可用并在PATH中。 - 从源码构建时需要 Java 17 和 npm;如果只想构建而不跑测试,可以通过 Gradle 命令加
-x test跳过测试。 - 如果改动包含 UI 部分,需要先 clone
sonarqube-webapp仓库,在本地构建,再通过WEBAPP_BUILD_PATH环境变量构建主仓库。 - 阈值具体数值、扫描执行和 CI 集成方式仍由项目侧配置,代理不改变这些流程的语义。
使用场景
- CI 构建完成后需要确认质量门禁是否通过,并根据结果决定是否继续部署
- Java 与前端混用的项目需要解析 JaCoCo 和 Istanbul 覆盖率报告,核对是否达到阈值
- 提交合并请求时需要自动读取 SonarQube 门禁状态,拦截新引入的 bug 或严重告警
- 本地构建 SonarQube 时需要配置 Java 17 和 Native Git,并按需跳过测试加快编译
适合人员
- 需要在合并前确认门禁状态的 CI 工程师,希望自动化拦截不达标的代码变更
- 维护多语言仓库的后端工程师,需要统一查看 JaCoCo、Istanbul 和 lcov 覆盖率
- 负责 SonarQube 部署的 DevOps 工程师,需要在流水线中集成门禁检查和阈值控制
- 参与 SonarQube 源码贡献的开发者,需要按规范在本地完成 Java 与 Web 应用构建