Webhook

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文介绍 Webhook 以及如何为 Azure DevOps 项目设置它们。 Webhook 提供了将 Azure DevOps 事件的 JSON 表示形式发送到任何具有公共终结点的服务的方法。

注意

Azure DevOps 不收取设置服务挂钩或与外部服务集成的费用。 有关与服务相关的定价,请参阅特定服务的站点。

先决条件

需要满足以下先决条件才能管理 Azure DevOps 组织的 Webhook:

  • 组织中的所有者项目集合管理员 角色。

  • 组织中的项目,以及一个包含要向其发送 Azure DevOps 事件的公共 HTTP 或 HTTPS 终结点的服务。

    重要

    建议仅使用 HTTPS 终结点。 HTTP 有可能发送专用数据,包括身份验证标头,在事件有效负载中未加密。 必须在 Webhook 上使用 HTTPS 进行基本身份验证。

将 JSON 表示形式发送到服务

  1. 在 Azure DevOps 项目中,转到 Project 设置>服务挂钩。https://<organization-name>/<project-name>/_settings/serviceHooks

    项目设置中服务挂钩选项的屏幕截图。

  2. “服务挂钩 ”页上,选择 + 图标或 “创建订阅”。

    在“服务挂钩”页上选择“创建订阅”的屏幕截图。

  3. “服务 ”屏幕上,选择 “Web 挂钩 ”,然后选择“ 下一步”。

    在“服务”页上选择“Web 挂钩”的屏幕截图。

  4. “触发器 ”屏幕上,选择要触发 Webhook 的 Azure DevOps 事件,然后选择“ 下一步”。 有关 Azure DevOps 使用者发布的 JSON 有效负载的详细信息,请参阅 服务挂钩事件

    选择和配置触发器事件的屏幕截图。

  5. “操作” 屏幕上,配置目标 URL 以及事件发生时要执行的操作。 有关要发送的资源详细信息、发送的消息和要发送的详细消息的详细信息,请参阅要发送的资源详细信息。

    注意

    Webhook 不能以 localhost(环回)或特殊范围 IPv4/IPv6 地址为目标。

  6. 选择“测试以测试服务挂钩订阅。

    配置“操作”对话框的屏幕截图。

  7. 测试成功完成后,关闭通知屏幕,然后在“操作”屏幕上选择“完成”。

    服务挂钩订阅的测试结果的屏幕截图

  8. 现在已设置 Webhook。 转到目标服务以查看 JSON 表示形式。

    查看 JSON 表示形式的屏幕截图。

提示

还可以以编程方式创建 Webhook。 有关详细信息,请参阅 以编程方式创建服务挂钩订阅。

要发送的资源详细信息

发送的资源详细信息、发送的消息以及“操作”窗格中用于发送设置的详细消息控制要发送的 JSON 有效负载的大小。 要发送 的资源详细信息控制要发送的资源量。 默认值为 “全部”,但你也可以选择发送 “最小”,仅发送 URL 和 ID 等键字段,或 “无”。

对于调用方不需要太多或任何有关资源的信息,因为它依赖于消息或详细消息本身,因此无最小值 非常有用。 最小 也可用于安全原因。 调用方必须回调到 Azure DevOps Services,并通过正常的安全和权限检查来获取有关资源的更多详细信息。

以下示例 JSON 显示了有关资源的最小详细信息:

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }