Gerrit + Jenkins:合并完成后如何触发操作或者放弃审核?

时间:2013-08-10 01:27:07

标签: jenkins jenkins-plugins gerrit

我当前的触发器Jenkins构建在git push上,以引用Jenkins中的gerrit触发器(在评论开始时)。这样可以在审核完成之前生成适合于测试和验证的构建。审核完成后(任何必要的重新定位完成),审核将标记为完成,这会触发代码与Git的最终合并(仅限快进)。

这很有效,但我更喜欢将Jenkins的构建工件停放在某个特殊区域,直到审核最终合并为止,此时最后一个构建的工件会转到其他地方(如果审核被放弃,那些工件将被清除)

我想我可能会在Jenkins中创建一个特殊的合并后作业,并让它在合并时触发,但是因为如果分支被放弃我想触发这样的工作,我不认为合并触发器会削减它。 是否有一个gerrit / Jenkins触发器可以帮助我更准确地自动化?(目前我们每个主要组件都有一个主要的构建工作......但我可能只需要一个触发任何一个的全局工作合并组件来处理所述工件的最终处置。)

2 个答案:

答案 0 :(得分:3)

詹金斯也有“改变被遗弃”的触发器。

每个分支/更改/提交/推送都有多个Jenkins作业没有问题,两者都有火(并且会返回Gerrit的综合评论,因此没有额外的垃圾邮件)。

您可以创建一个新的全局作业,只会在合并或放弃时触发(只需添加两个触发器)。您的构建或构建后操作可以是一个shell脚本或实用程序,可以执行您想要的操作。

答案 1 :(得分:0)

还有hooks; e.g。

change-merged --change <change id> --change-url <change url> \ 
--project <project name> --branch <branch> --topic <topic> \
--submitter <submitter> --commit <sha1>

change-abandoned --change <change id> --change-url <change url> \
--project <project name> --branch <branch> --topic <topic> \
--abandoner <abandoner> --reason <reason>

event stream您可以订阅,并触发自定义操作。

$ ssh -p 29418 review.example.com gerrit stream-events
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}