【发布时间】:2019-05-08 05:42:20
【问题描述】:
我们正在使用 Azure DevOps webhooks 从我们的客户项目中调用我们的服务。
目的是在他们完成 PR 到 master 分支后无缝地在他们的存储库上执行一些操作。
您可以看到,我们已将 webhook 配置为仅在特定 repo 上的“请求合并尝试”时调用,合并成功时调用“主”分支。
我观察到的是,这会导致我们的 webhook 在任何时候向拉取请求添加提交时都会被命中,而不仅仅是在拉取请求完成时。
仅在成功完成 PR 到特定分支时执行操作的正确机制是什么?
我们应该对我们的代码做些什么来验证,还是我们应该让我们的客户在服务挂钩订阅中进行不同的设置?
【问题讨论】:
-
目前我看到的唯一解决方法是在我们的服务代码中添加对
body.resource.pullRequestStatus != "completed"的检查。此时我们必须返回一个成功的状态码(尽管实际上我们只想接受状态已完成的请求),否则 webhook 似乎会丢失其订阅 -
正如
Pull request merge create的解释,表示创建了merge commit。这就是为什么它在您的拉取请求创建后触发的原因。你可以试试活动:Pull request updated
标签: azure-devops webhooks azure-devops-rest-api