我正在使用 jenkins gerrit-trigger 插件。它确实触发了工作。问题是工作完成后, Jenkins 无法发送评论,因为我在 gerrit 中没有“已验证”标签。
我发现在配置中有 Gerrit Reporting Values 部分(Jenkins -> Manager -> Gerrit Trigger -> 单击您的 gerrit“编辑”按钮)。
在该部分中有“验证”和“代码审查”的硬编码小节。另一个小节是“Gerrit 验证命令”,其中包含以下命令:
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.
如何添加新的“参数”或如何传递环境变量?
我试过使用
EnvInject
插件,但似乎环境变量没有填充值(jenkins 的错误消息说没有 $VAR 参数)。
最佳答案
这个问题很老了,但我遇到了同样的问题,想分享我的解决方案:
安装 Groovy Postbuild 插件:
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin
使用以下脚本作为 PostBuild-Action。
它会为你做:
//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 Trigger Plugin 来报告
关于jenkins - 如何从 jenkins gerrit trigger 对自定义标签进行投票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733592/