如果经过验证和批准,则自动提交评论

时间:2013-07-03 15:15:34

标签: jenkins gerrit

我有Gerrit 2.5服务器和Jenkins服务器(带Gerrit Trigger)。

对于某些分支机构,我配置了Jenkins Gerrit Trigger,如果构建和测试成功,它不仅会验证,还会批准审核。

我的问题是:如何配置Gerrit或Jenkins,Jenkins经过验证和批准的评论会自动合并?

尝试过的解决方案:

  • 使用“Post Build Task”Jenkins插件添加一个脚本来合并评论(如Gerrit - how to auto publish change after Jenkins run中所述)。问题:它将构建与失败的测试合并。
  • 添加Gerrit“评论添加”挂钩以检查,如果审核已经过验证和批准,则合并。问题:它很复杂,只能从指定的分支机构自动提交。

2 个答案:

答案 0 :(得分:3)

我找到的解决方案是使用Groovy Postbuild插件。在JUnit post build操作之后执行以下脚本可以解决问题:

if(manager.build.result.isBetterThan(hudson.model.Result.UNSTABLE)) {
    def cmd = 'ssh -p 29418 HOST gerrit review --verified +1 --code-review +2 --submit --project $GERRIT_PROJECT $GIT_COMMIT'
    cmd = manager.build.environment.expand(cmd)
    manager.listener.logger.println("Merge review: '$cmd'")
    def p = "$cmd".execute()
    manager.listener.logger.println(p.in.text)
    manager.addShortText("M")
}

您的Jenkins帐户需要+1验证,+ 2审核并提交权限。您还必须设置公钥身份验证。

在Windows上:您可以使用以下命令从git发行版运行ssh

"C:\Program Files (x86)\Git\bin\sh.exe" --login -c "ssh -p 29418 HOST ..."

答案 1 :(得分:3)

这是使用gerrit 2.10-rc0

的当前工作命令
if(manager.build.result.isBetterThan(hudson.model.Result.UNSTABLE)) {
    def cmd = 'ssh -p 29418 $host gerrit review --verified +1 --code --review +2 --submit $GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER'
    cmd = manager.build.environment.expand(cmd)
    manager.listener.logger.println("Merge review: '$cmd'")
    def p = "$cmd".execute()
    manager.listener.logger.println(p.in.text)
    manager.addShortText("M")
}