Sonar Gerrit Plugin忽略noIssuesScore及Pipeline语法生成器故障求助
关于Sonar Gerrit Plugin的两个问题解决方案
我来帮你梳理下这两个问题,都是这个插件在Jenkins Pipeline环境下的常见痛点:
问题1:noIssuesScore配置被忽略,无违规时自动发布+1评分
从你的配置来看,你期望无问题时提交0分,但实际得到的是+1,这个问题大概率和参数类型以及插件的版本逻辑有关:
参数类型不匹配:你当前把
noIssuesScore和issuesScore设为字符串(带引号的'-1'、'0'),但插件的Pipeline参数实际上期望的是整数类型。当插件解析字符串类型的评分时,可能会 fallback 到默认的+1值。
尝试修改配置,去掉引号,用数字类型:sonarToGerrit( sonarURL: env.SONAR_HOST_URL, // 注意去掉env后面的引号,Jenkins环境变量直接用env.变量名即可 severity: 'INFO', postScore: true, category: 'Code-Review', issuesScore: -1, noIssuesScore: 0 )插件版本bug:虽然你用的是最新的2.1版本,但这个版本可能存在
noIssuesScore参数的逻辑漏洞。可以尝试两个方向:- 降级到2.0版本测试,看是否参数能正常生效;
- 查看插件的更新日志(在Jenkins插件管理页面就能看到),确认2.1版本是否有相关的bug记录。
额外排查点:
- 确认SonarQube扫描结果确实没有任何INFO及以上级别的问题(因为你设置了
severity: 'INFO',只要有INFO级别的问题,插件就会触发issuesScore); - 检查Jenkins账号在Gerrit的权限,确保它有修改Code-Review评分的权限(不过你能得到+1,说明权限是足够的)。
- 确认SonarQube扫描结果确实没有任何INFO及以上级别的问题(因为你设置了
问题2:Pipeline语法生成器输出异常
这个问题是很多自定义Jenkins插件的通病——Pipeline语法生成器对非核心插件的步骤支持不完善,无法正确生成可直接使用的代码,只能手动编写。
你可以直接忽略生成器的输出,按照插件官方文档的参数说明手动编写步骤,就像上面给出的示例一样。另外,注意env.'SONAR_HOST_URL'的写法是错误的,Jenkins里访问环境变量应该用env.SONAR_HOST_URL(不需要引号包裹变量名)。
额外建议
如果修改参数类型后还是无法解决评分问题,你可以查看Jenkins的系统日志(Manage Jenkins → System Log),搜索SonarToGerritPublisher相关的日志,里面会有参数解析和评分提交的详细过程,能帮你定位具体的问题原因。
内容的提问来源于stack exchange,提问作者Max N.
相关产品推荐
相关产品推荐

