如何 post 对来自 jenkins gerrit 触发器的自定义标签进行投票?
How to post votes on custom labels from jenkins gerrit trigger?
我正在使用 jenkins gerrit-trigger 插件。它确实触发了工作。问题是工作完成后,jenkins 无法发送评论,因为我在 gerrit 中没有 'verified' 标签。
我发现在配置中有 Gerrit Reporting Values 部分(Jenkins -> Manager -> Gerrit Trigger -> 点击你的 gerrit "edit" 按钮)。
在该部分中,有 "Verify" 和 "Code Review" 的硬编码小节。另一个小节是 "Gerrit Verified Commands",命令如下:
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW>
如何在此处添加自定义标签?
我尝试将命令更改为:
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --acceptance-tests $ACCEPTANCE_TESTS_VOTE --code-quality $CODE_QUALITY_VOTE
来自文档:
The variables and will have the values defined above. The variable will have the URL to the build result.
和
You can also use any environment variable from the build that was started with the $ENV_VAR syntax.
如何添加新的"parameter"点赞或如何传递环境变量?
我试过使用EnvInject
插件,但是好像环境变量没有填值(jenkins的报错信息说没有$VAR参数)
$ENV_VAR 语法仅可用于构建 started 消息,因为这是唯一一次在上下文中可能只有一个构建。
该插件目前(v. 2.12)对于它所知道的审查标签有点固执己见,它假设经过验证和代码审查。但是通过编辑经过验证的命令,您可以更改 Jenkins 中经过验证和代码审查在 Gerrit 中的含义。
例如
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --acceptance-tests <VERIFIED> --code-quality <CODE_REVIEW>
该插件的开发人员一直在讨论添加可配置标签支持,但代码审查和验证假设在代码中运行很深,因此修复起来并不容易。
这个问题很老了,但我遇到了同样的问题,想分享我的解决方案:
安装 Groovy Postbuild 插件:
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin
使用以下脚本作为 PostBuild-Action。
它会为你做:
- 收集必要的环境变量和作业状态
- 构建反馈消息
- 构建 ssh 命令
执行 ssh 命令 -> 向 gerrit 发送反馈
//Collect all environment variables of the current build job
def env = manager.build.getEnvironment(manager.listener)
//Get Gerrit Change Number
def change = env['GERRIT_CHANGE_NUMBER']
//Get Gerrit Patch Number
def patch = env['GERRIT_PATCHSET_NUMBER']
//Get Url to current job
def buildUrl = env['BUILD_URL']
//Build Url to console output
def buildConsoleUrl = buildUrl + "/console"
//Verification will set to succeded (+1) and feedback message will be generated...
def result = +1
def message = "\\"Static code analysis succeeded - ${buildUrl}\\""
//...except job failed (-1)...
if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)){
result = -1
message = "\\"Static code analysis failed - ${buildUrl}\\""
}
//...or job was aborted
if (manager.build.result == hudson.model.Result.ABORTED){
result = 0
message = "\\"Static code analysis aborted - ${buildConsoleUrl}\\""
}
//Send Feedback to Gerrit via ssh
//-i - Path to private ssh key
def ssh_message = "ssh -i /path/to/jenkins/.ssh/key -p 29418 user@gerrit-host gerrit review ${change},${patch} --label=customLabel=${result} --message=${message}"
manager.listener.logger.println(new ProcessBuilder('bash','-c',"${ssh_message}").redirectErrorStream(true).start().text)
我希望这能帮助您在不使用 Gerrit 触发器插件报告的情况下解决您的挑战
我通过将 gerrit 触发器配置的高级部分中的命令更改为例如
在自定义标签上发布 +1/-1
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --label 'MyCustomVerifiedLabel=<VERIFIED>' --code-review <CODE_REVIEW>
我添加了对自定义标签的支持(我公司的 CI 基础架构依赖于 Jenkins 和 Gerrit,而且我们已经迫不及待地想要这个功能了)
Link 到拉取请求:https://github.com/jenkinsci/gerrit-trigger-plugin/pull/393/files
我建议检查我的版本并自己构建 .hpi,然后将其安装在您的 Jenkins 实例上。
这允许您从 Gerrit 服务器配置页面添加自定义标签并为每个作业自定义每个报告值(配置 -> Gerrit 触发器 -> 高级),同时处理插件的后台内部工作(Gerrit 之间的通信) & 詹金斯)
希望这对其他想要使用此功能的人有所帮助!
cc @rsandell, @spinus
我正在使用 jenkins gerrit-trigger 插件。它确实触发了工作。问题是工作完成后,jenkins 无法发送评论,因为我在 gerrit 中没有 'verified' 标签。
我发现在配置中有 Gerrit Reporting Values 部分(Jenkins -> Manager -> Gerrit Trigger -> 点击你的 gerrit "edit" 按钮)。 在该部分中,有 "Verify" 和 "Code Review" 的硬编码小节。另一个小节是 "Gerrit Verified Commands",命令如下:
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW>
如何在此处添加自定义标签?
我尝试将命令更改为:
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --acceptance-tests $ACCEPTANCE_TESTS_VOTE --code-quality $CODE_QUALITY_VOTE
来自文档:
The variables and will have the values defined above. The variable will have the URL to the build result.
和
You can also use any environment variable from the build that was started with the $ENV_VAR syntax.
如何添加新的"parameter"点赞或如何传递环境变量?
我试过使用EnvInject
插件,但是好像环境变量没有填值(jenkins的报错信息说没有$VAR参数)
$ENV_VAR 语法仅可用于构建 started 消息,因为这是唯一一次在上下文中可能只有一个构建。
该插件目前(v. 2.12)对于它所知道的审查标签有点固执己见,它假设经过验证和代码审查。但是通过编辑经过验证的命令,您可以更改 Jenkins 中经过验证和代码审查在 Gerrit 中的含义。 例如
gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --acceptance-tests <VERIFIED> --code-quality <CODE_REVIEW>
该插件的开发人员一直在讨论添加可配置标签支持,但代码审查和验证假设在代码中运行很深,因此修复起来并不容易。
这个问题很老了,但我遇到了同样的问题,想分享我的解决方案:
安装 Groovy Postbuild 插件: https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin
使用以下脚本作为 PostBuild-Action。
它会为你做:
- 收集必要的环境变量和作业状态
- 构建反馈消息
- 构建 ssh 命令
执行 ssh 命令 -> 向 gerrit 发送反馈
//Collect all environment variables of the current build job def env = manager.build.getEnvironment(manager.listener) //Get Gerrit Change Number def change = env['GERRIT_CHANGE_NUMBER'] //Get Gerrit Patch Number def patch = env['GERRIT_PATCHSET_NUMBER'] //Get Url to current job def buildUrl = env['BUILD_URL'] //Build Url to console output def buildConsoleUrl = buildUrl + "/console" //Verification will set to succeded (+1) and feedback message will be generated... def result = +1 def message = "\\"Static code analysis succeeded - ${buildUrl}\\"" //...except job failed (-1)... if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)){ result = -1 message = "\\"Static code analysis failed - ${buildUrl}\\"" } //...or job was aborted if (manager.build.result == hudson.model.Result.ABORTED){ result = 0 message = "\\"Static code analysis aborted - ${buildConsoleUrl}\\"" } //Send Feedback to Gerrit via ssh //-i - Path to private ssh key def ssh_message = "ssh -i /path/to/jenkins/.ssh/key -p 29418 user@gerrit-host gerrit review ${change},${patch} --label=customLabel=${result} --message=${message}" manager.listener.logger.println(new ProcessBuilder('bash','-c',"${ssh_message}").redirectErrorStream(true).start().text)
我希望这能帮助您在不使用 Gerrit 触发器插件报告的情况下解决您的挑战
我通过将 gerrit 触发器配置的高级部分中的命令更改为例如
在自定义标签上发布 +1/-1gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --label 'MyCustomVerifiedLabel=<VERIFIED>' --code-review <CODE_REVIEW>
我添加了对自定义标签的支持(我公司的 CI 基础架构依赖于 Jenkins 和 Gerrit,而且我们已经迫不及待地想要这个功能了)
Link 到拉取请求:https://github.com/jenkinsci/gerrit-trigger-plugin/pull/393/files 我建议检查我的版本并自己构建 .hpi,然后将其安装在您的 Jenkins 实例上。
这允许您从 Gerrit 服务器配置页面添加自定义标签并为每个作业自定义每个报告值(配置 -> Gerrit 触发器 -> 高级),同时处理插件的后台内部工作(Gerrit 之间的通信) & 詹金斯)
希望这对其他想要使用此功能的人有所帮助!
cc @rsandell, @spinus