【问题标题】:How to call a webhook only when a pull request has been successfully merged into master?仅当拉取请求已成功合并到 master 时,如何调用 webhook?
【发布时间】:2019-05-08 05:42:20
【问题描述】:

我们正在使用 Azure DevOps webhooks 从我们的客户项目中调用我们的服务。

目的是在他们完成 PR 到 master 分支后无缝地在他们的存储库上执行一些操作。

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

您可以看到,我们已将 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


【解决方案1】:

您应该使用“拉取请求更新”事件并过滤“状态已更改”。这会触发任何 PR 状态更改的事件。只有当状态变为“已完成”时,您才能在 API 中执行操作。

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多