我希望 Jenkins 在 Gerrit 中上传或更改补丁集时触发构建。我该如何配置它?

我希望 Jenkins 在 Gerrit 中上传或更改补丁集时触发构建。我该如何配置它?

我正在使用 Jenkins 1.557 来监视 Gerrit 2.8 实例的更改。我正在使用以下插件:

  • Git 插件 2.1.0
  • Git 客户端插件 1.7.0
  • Gerrit 触发器 2.11.1

当我在 Gerrit Trigger 上使用“测试连接”时,它返回成功,所以我知道凭据有效。我使用“高级”按钮下的默认值。

对于我的测试构建类型,我使用的是 git repo,Jenkins 会检查它(我添加了构建后步骤“ls -l”,它会正确显示 repo 内容)。我将构建触发器设置为“gerrit 事件”,对于“gerrit 触发器”,我选择了“检查未审核的补丁集”,并启用了“补丁集已创建”触发器。gerrit 项目设置似乎正确。

我无法通过上传新的更改或更改的新补丁集来触发构建。当我使用“查询并触发 Gerrit 补丁”按钮手动触发构建时,构建会进行,但没有记录任何投票。我显然错过了部分谜题 - 如果我 ssh 进入 gerrit 并执行“流事件”,我就会看到我期望看到的事件。

Jenkins - O'Reilly 的权威指南 - 并没有真正涵盖 Gerrit。我试图避免轮询,因为这个 Jenkins 实例将管理数十个 git 存储库。

调试的下一步是什么?

答案1

过去曾发生过一些变化,导致插件损坏:

  • Gerrit 2.8 删除了弃用的approve命令,据我所知,这破坏了插件,请参阅讨论发行说明。这个问题已在 2.11.0-beta1 中修复,所以我想你的情况不是这样。

  • Gerrit 2.7 引入了直播活动特权,不允许用户默认接收流事件,请参阅发行说明。很可能您的 Jenkins 用户没有此访问权限,因此推动更改后不会触发任何构建。

相关内容