Webhook

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

Webhook 提供了一种将事件的 JSON 表示形式发送到任何服务的方法。 只需要一个公共终结点(HTTP 或 HTTPS)即可。

有关这位使用者发布的 JSON 有效负载的详细信息,请参阅事件

先决条件

只有组织所有者或项目集合管理员istrators 才能管理组织的 Webhook。

将 JSON 表示形式发送到服务

  1. 转到项目 服务挂钩 页:

    https://{orgName}/{project_name}/_settings/serviceHooks

    最新版本的“项目管理”页的屏幕截图

    选择“创建订阅”。

  2. 选择并配置 Azure DevOps Services 事件:

    配置事件对话框

  3. 配置事件发生时要执行的操作:

    有关要发送的资源详细信息、要发送的消息和要发送设置的详细消息的信息,请参阅以下问答

    配置操作对话框

  4. 测试服务挂钩订阅并完成向导:

    测试

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

查看 JSON 表示形式

定价

Azure DevOps 不收取与外部服务集成的框架费用。 查看特定服务的网站,了解与其服务相关的定价。

问题解答

问:要发送的资源详细信息、要发送的消息以及要为其发送设置的详细消息是什么?

答:它们控制发送的 JSON 有效负载的大小。

用于 发送 设置的资源详细信息控制发送的资源量。 默认值为“全部”,但你也可以选择发送“最小”(仅发送 URL 和 ID 等键字段),或“无”。

在调用方实际上不需要太多资源(如果有)的情况下,“无 ”和 “最小值 ”非常有用,因为它依赖于消息或详细消息。 最小也可用于安全原因,例如,调用方需要回调 Azure DevOps Services,并经历正常的安全/权限检查以获取有关资源的更多详细信息。

示例 JSON:

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

问:是否可以以编程方式创建订阅?

答:是的,请参阅此处的详细信息

问:是否可以将 Webhook 发送到非 HTTPS 终结点?

答: 是的。 但是,建议仅对 Webhook 使用 HTTPS 终结点。 使用 HTTP 意味着可能会发送未加密的专用数据。 这包括 Webhook 中的任何身份验证标头。

问:设置不是 HTTPS 的 Webhook 时,是否可以使用基本身份验证?

答: 不是。 在 Webhook 上使用基本身份验证时,必须使用 HTTPS。

问:是否可以将 localhost 或特殊范围 IP 用作 Webhook 目标?

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