Jenkins Gerrit 报告值插件删除代码审查的值
Jenkins Gerrit reporting values plugin removes Code-review's value
我有一个包含两个步骤的管道脚本。
SonarQube
分析
UnitTests
如果 SonarQube
发现警告,它会将它们作为注释报告给 Gerrit 并设置 Code-review-1
。下一阶段是单元测试,如果一切正常,流水线将成功,Jenkins 应该向 Gerrit Verified+1
报告。但是,当 Jenkins 报告 Verified+1
时,它会删除 Code-review-1
。
我的管道脚本的相关部分:
....
steps {
withSonarQubeEnv('Managed SonarQube') {
sh '''./sonar_runner.sh preview'''
sonarToGerrit(
inspectionConfig: [
serverURL: env.'SONAR_HOST_URL',
baseConfig: [
sonarReportPath: '.scannerwork/sonar-report.json',
autoMatch: true
]
],
scoreConfig: [
issueFilterConfig: [
severity: 'MINOR',
newIssuesOnly: false,
changedLinesOnly: false
],
category: 'Code-Review',
noIssuesScore: 0,
issuesScore: -1
]
)
}
stage('UnitTest') {
steps {
ansiColor('xterm') {
sh '''./unittest.sh'''
}
....
我的“Gerrit 报告值”部分:
我的 Gerrit 历史:
我的最终结果:
我的问题:
如何将 Code-review-1
和 Verified+1
合二为一 运行?我怎样才能避免 Gerrit 在报告 Verified+1
时删除 Code-review-1
?我对 GUI 解决方案和管道持开放态度。
编辑:
无法更改 Gerrit 插件的全局配置。我必须在 Jenkins 工作级别上解决它。可能吗?
我认为您必须在 "Code Review" 字段中保留一个空字符串。 “0”值表示您要删除之前的投票。但是你还需要在
检查全局 gerrit-trigger 配置
Jenkins > Manage Jenkins > Gerrit Trigger > Edit > Gerrit Reporting Values.
首先,正如我在问题中提到的,全局 Gerri
t 配置更改和新的 Gerrit
服务器对我来说不是选项。我需要在 Jenkins 工作级别解决这个问题。
我找到了一个 "solution",它是一种变通方法,但它确实有效。
第 0 步:
如果您在 Jenkins
控制台日志中检查 SonarQube
的 STDOUT
,您可以看到一个特定的行,它表示受分数计算影响的问题数。这一行是:Issues to be involved in score calculation: X
。这意味着您可以根据这一行知道是否存在受影响的问题。
第 1 步:
您应该检查 Jenkins
控制台日志并找到分数计算中涉及的问题数量。你可以在下面看到我的实现。如果存在问题(RegEx
值不为零),则此阶段应将构建结果设置为 UNSTABLE
.
stage('Results') {
steps {
script{
for(String line : currentBuild.getRawBuild().getLog(30)){
def find_pattern = (line =~ /^Issues to be involved in score calculation: [1-9]/)
if(find_pattern){
echo line
echo "Sonar has found warnings in changed lines. Build goes to UNSTABLE."
currentBuild.result = "UNSTABLE"
}
}
}
其工作原理的示例输出:
Report has loaded and contains 1021 issues
Issues to be commented: 1
Issues to be involved in score calculation: 1
Review has been sent
[Pipeline] }
[Pipeline] // withSonarQubeEnv
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Results)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Issues to be involved in score calculation: 1
[Pipeline] echo
Sonar has found warnings in changed lines. Build goes to UNSTABLE.
第 2 步:
配置 Gerrit Reporting Values
块以在 UNSTABLE
构建结果的情况下将两个值(CR 和已验证标签)报告回 Gerrit
。
我有一个包含两个步骤的管道脚本。
SonarQube
分析UnitTests
如果 SonarQube
发现警告,它会将它们作为注释报告给 Gerrit 并设置 Code-review-1
。下一阶段是单元测试,如果一切正常,流水线将成功,Jenkins 应该向 Gerrit Verified+1
报告。但是,当 Jenkins 报告 Verified+1
时,它会删除 Code-review-1
。
我的管道脚本的相关部分:
....
steps {
withSonarQubeEnv('Managed SonarQube') {
sh '''./sonar_runner.sh preview'''
sonarToGerrit(
inspectionConfig: [
serverURL: env.'SONAR_HOST_URL',
baseConfig: [
sonarReportPath: '.scannerwork/sonar-report.json',
autoMatch: true
]
],
scoreConfig: [
issueFilterConfig: [
severity: 'MINOR',
newIssuesOnly: false,
changedLinesOnly: false
],
category: 'Code-Review',
noIssuesScore: 0,
issuesScore: -1
]
)
}
stage('UnitTest') {
steps {
ansiColor('xterm') {
sh '''./unittest.sh'''
}
....
我的“Gerrit 报告值”部分:
我的 Gerrit 历史:
我的最终结果:
我的问题:
如何将 Code-review-1
和 Verified+1
合二为一 运行?我怎样才能避免 Gerrit 在报告 Verified+1
时删除 Code-review-1
?我对 GUI 解决方案和管道持开放态度。
编辑:
无法更改 Gerrit 插件的全局配置。我必须在 Jenkins 工作级别上解决它。可能吗?
我认为您必须在 "Code Review" 字段中保留一个空字符串。 “0”值表示您要删除之前的投票。但是你还需要在
检查全局 gerrit-trigger 配置Jenkins > Manage Jenkins > Gerrit Trigger > Edit > Gerrit Reporting Values.
首先,正如我在问题中提到的,全局 Gerri
t 配置更改和新的 Gerrit
服务器对我来说不是选项。我需要在 Jenkins 工作级别解决这个问题。
我找到了一个 "solution",它是一种变通方法,但它确实有效。
第 0 步:
如果您在 Jenkins
控制台日志中检查 SonarQube
的 STDOUT
,您可以看到一个特定的行,它表示受分数计算影响的问题数。这一行是:Issues to be involved in score calculation: X
。这意味着您可以根据这一行知道是否存在受影响的问题。
第 1 步:
您应该检查 Jenkins
控制台日志并找到分数计算中涉及的问题数量。你可以在下面看到我的实现。如果存在问题(RegEx
值不为零),则此阶段应将构建结果设置为 UNSTABLE
.
stage('Results') {
steps {
script{
for(String line : currentBuild.getRawBuild().getLog(30)){
def find_pattern = (line =~ /^Issues to be involved in score calculation: [1-9]/)
if(find_pattern){
echo line
echo "Sonar has found warnings in changed lines. Build goes to UNSTABLE."
currentBuild.result = "UNSTABLE"
}
}
}
其工作原理的示例输出:
Report has loaded and contains 1021 issues
Issues to be commented: 1
Issues to be involved in score calculation: 1
Review has been sent
[Pipeline] }
[Pipeline] // withSonarQubeEnv
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Results)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Issues to be involved in score calculation: 1
[Pipeline] echo
Sonar has found warnings in changed lines. Build goes to UNSTABLE.
第 2 步:
配置 Gerrit Reporting Values
块以在 UNSTABLE
构建结果的情况下将两个值(CR 和已验证标签)报告回 Gerrit
。