只有当拉取请求成功合并到主分支时,如何调用Webhook?

5
我们正在使用Azure DevOps webhooks从客户项目中调用服务。
我们的意图是在他们完成对主分支的PR后,无缝执行一些操作。
在我的测试中,我设置了一个Webhook,如下所示:Event hook subscription settings 您可以看到,我们已经配置了Webhook,仅在特定存储库上的“尝试合并拉取请求”时才会被调用,在成功合并时进入“master”分支。
我观察到的是,这会导致我们的Webhook在添加提交到拉取请求时被触发,而不仅仅是在拉取请求完成时。
正确的机制是什么,只有在成功完成特定分支的PR时才执行操作?
我们是否应该在我们的代码上进行验证,还是应该让我们的客户在服务钩子订阅中进行不同的设置?

1
目前我所能想到的唯一解决办法就是在我们的服务代码中添加一个检查,判断body.resource.pullRequestStatus != "completed"。此时我们必须返回一个成功的状态码(即使实际上我们只想接受状态为完成的请求),否则Webhook似乎会失去其订阅。 - ElFik
作为“拉取请求合并创建”的解释,它意味着合并提交被创建。这就是为什么在您创建拉取请求后会触发它。您可以尝试使用事件:“拉取请求已更新”。 - Mengdi Liang
1个回答

4
你应该使用“Pull request updated”事件,并过滤“Status changed”。这将触发任何PR状态更改的事件。只有当状态更改为“completed”时,您才能在API中执行操作。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接