0

我目前的触发器 Jenkins 通过 Jenkins 中的 gerrit 触发器构建在 git push 到 refs/for/ 的基础上(在审查开始时)。这会生成一个适合在审核完成之前进行测试和验证的构建。当审查完成时(并且任何必要的变基都完成),审查被标记为完成,这会触发代码到 Git 的最终合并(仅限快进)。

这可行,但我更愿意将来自 Jenkins 的构建工件停放在一个特殊的地方,直到最终合并审查,此时最后一个构建的工件转到其他地方(如果放弃审查,这些工件将被清除)。

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

4

2 回答 2

3

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

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

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

于 2013-08-10T20:03:09.553 回答
0

还有钩子;例如

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>

或您可以订阅和触发自定义操作的事件流。

$ ssh -p 29418 review.example.com gerrit stream-events
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}
于 2013-08-12T18:59:59.593 回答