jenkins - 如何从 jenkins gerrit trigger 对自定义标签进行投票?

标签 jenkins jenkins-plugins gerrit

我正在使用 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。

它会为你做:

  • 收集必要的环境变量和作业状态
  • 构建反馈消息
  • 构建 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 Trigger Plugin 来报告

    关于jenkins - 如何从 jenkins gerrit trigger 对自定义标签进行投票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733592/

    相关文章:

    security - 提供商不受支持或输入错误

    git - 是否可以在不使用个人 SSH 证书的情况下为 GIT 设置 Gerrit

    build - Hudson/jenkins 不会因错误而失败

    jenkins - 如何在阶段管道 View 中显示更多信息?

    git - Jenkins 无法从安装在同一台服务器上的 git 存储库中获取,在 box 上成功执行命令

    templates - 使用 Jenkins 根据构建参数生成文件

    git - 在 git push 上我得到错误 : error: invalid protocol: wanted 'old new ref'

    Jenkins 条件项目

    shell - Powershell脚本在Jenkins中没有失败

    jenkins - Sonar 与 Jenkins