Azure devops 如何仅在拉请求已成功合并到主应用程序中时调用webhook?

Azure devops 如何仅在拉请求已成功合并到主应用程序中时调用webhook?,azure-devops,webhooks,azure-devops-rest-api,Azure Devops,Webhooks,Azure Devops Rest Api,我们经常从客户的项目中调用我们的服务 这样做的目的是在他们完成了主分支的PR后,在他们的存储库上无缝地执行一些操作 在我的测试中,我设置了一个webhook,定义如下: 您可以看到,我们已经将webhook配置为只有在合并成功时,才会在特定repo上的“pull-request-merge-emptured”调用到“master”分支中 我所观察到的是,这会导致我们的webhook在任何时候被添加到pull请求时被命中,而不仅仅是在pull请求完成时 只有在成功完成的PRs进入特定分支时才执行操

我们经常从客户的项目中调用我们的服务

这样做的目的是在他们完成了主分支的PR后,在他们的存储库上无缝地执行一些操作

在我的测试中,我设置了一个webhook,定义如下:

您可以看到,我们已经将webhook配置为只有在合并成功时,才会在特定repo上的“pull-request-merge-emptured”调用到“master”分支中

我所观察到的是,这会导致我们的webhook在任何时候被添加到pull请求时被命中,而不仅仅是在pull请求完成时

只有在成功完成的PRs进入特定分支时才执行操作的正确机制是什么

我们应该在代码上做些什么来验证,还是应该让客户在service hooks订阅中进行不同的设置?

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


目前我看到的唯一解决方法是添加对
body.resource.pullRequestStatus!=在我们的服务代码中“已完成”
。此时,我们必须返回一个成功的状态代码(即使我们实际上只希望在状态已完成的情况下接受请求),否则webhook似乎会丢失其订阅。在解释
Pull-request-merge-create
时,这意味着已创建合并提交。这就是为什么它会在创建拉取请求后触发。您可以尝试以下事件:
Pull request updated