【发布时间】:2018-02-18 18:46:36
【问题描述】:
我们的产品在 GitHub 上创建了 WebHooks。每个客户项目一个。
每个这样的项目,都链接到一个分支。
当对 GitHub 执行push 时,会触发相应的 WebHook,而 WebHook 又会向我们这边的端点发出请求以执行特定操作。
一种常见的情况是,客户有多个项目,连接到同一存储库的多个不同分支。因此,几个不同的 WebHook 连接到同一个存储库。
问题是当push 对其中一个分支执行时,GitHub 会触发所有与存储库相关的 WebHook。
我们希望当推送到某个分支时,只会触发一个对应的 WebHook。
我发现两篇帖子(其中一篇来自 2012 年)似乎涉及到这个问题:
一种可能的解决方案是解析在 webhook 请求中发送的 ref 参数并控制何时采取相应的行动(尚未检查该方向,希望 ref 确实始终存在并保持正确的分支路径/姓名)。但这将“为时已晚”——因为届时所有 WebHook 都将被触发......
但 GitHub 无法以某种方式配置此行为似乎是不合理的。
我们将不胜感激。
【问题讨论】:
-
解析单个 webhook 以获取推送事件并按分支过滤。或者,您可以分叉每个客户项目,其中每个 repo 都有单独的 webhook。
-
@osowskit 这将如何在 Jenkins 工作中实现?您是否只需要在 repo 的 refspec 字段中指定分支?如果不是,我不知道用于解析有效负载和匹配 refs 以确定是否构建的构建触发器插件(但也许存在一个?)
标签: github github-api webhooks