为服务挂钩创建自定义使用者
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
使用服务挂钩,可以通知第三方系统有关项目中发生的事件。 可以使用自定义使用者将 HTTP 消息发送到扩展清单中定义的终结点。
本文逐步讲解如何开发实现 示例使用者服务的扩展,其中包括以下事件和操作。
- 触发以下操作的受支持事件:
- 推送的代码
- 已创建拉取请求
- 拉取请求已更新
- 发生事件时要执行的操作受支持:
- 执行操作 (发送 HTTP 消息)
注意
在本文中,我们将项目的主目录称为“主页”。
有关详细信息,请参阅 扩展示例 GitHub 存储库。 有关可用作自定义使用者扩展触发器的所有受支持事件的列表,请参阅 事件类型列表。
提示
查看有关使用 Azure DevOps 扩展 SDK 进行扩展开发的最新文档。
服务挂钩的工作原理
服务挂钩 发布者 定义一组 事件。 订阅 侦听并等待 事件 ,并在触发事件时定义 操作 。
这是所有服务挂钩实现工作原理的一般说明。 对于本例,我们指定由扩展定义的使用者,以及发生事件时的指定操作。
创建扩展
将自定义使用者实现的特定贡献添加到基本 清单文件。 请参阅以下示例,了解添加贡献后清单的外观。
{
"manifestVersion": 1,
"id": "samples-service-hooks-consumer",
"version": "0.1.2",
"name": "Service Hooks Sample",
"description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
"publisher": "fabrikam",
"public": false,
"icons": {
"default": "images/logo.png"
},
"scopes": [],
"files": [
{
"path": "images",
"addressable": true
}
],
"content": {
"details": {
"path": "readme.md"
}
},
"categories": [
"Developer samples"
],
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"contributions": [
{
"id": "consumer",
"type": "ms.vss-servicehooks.consumer",
"targets": [
"ms.vss-servicehooks.consumers"
],
"properties": {
"id": "consumer",
"name": "Sample Consumer",
"description": "Sample consumer service",
"informationUrl": "https://aka.ms/vsoextensions",
"inputDescriptors": [
{
"id": "url",
"isRequired": true,
"name": "URL",
"description": "URL to post event payload to",
"inputMode": "textbox"
}
],
"actions": [
{
"id": "performAction",
"name": "Perform action",
"description": "Posts a standard event payload",
"supportedEventTypes": [
"git.push",
"git.pullrequest.created",
"git.pullrequest.updated"
],
"publishEvent": {
"url": "{{{url}}}",
"resourceDetailsToSend": "all",
"messagesToSend": "all",
"detailedMessagesToSend": "all"
}
}
]
}
}
]
}
注意
请记得更新 publisher
属性。
对于扩展中的每个贡献,清单定义以下项。
- 贡献类型 - 在本例中,使用者服务 (ms.vss-servicehooks.consumer)
- 贡献目标 - 在本例中 (ms.vss-servicehooks.consumers) 使用者服务
- 特定于每种贡献类型的属性
使用者具有以下属性。
属性 | 说明 |
---|---|
id | 使用者服务的唯一 ID。 |
name | 自定义使用者的名称,在创建服务挂钩订阅期间可见。 |
description | 描述使用者服务。 |
informationUrl | 查找有关扩展的详细信息。 |
inputDescriptors | 要由使用使用者服务创建订阅的用户使用的输入。 |
actions | 描述要执行的操作以及触发这些操作的事件。 |
使用者的操作具有以下属性:
属性 | 说明 |
---|---|
id | 操作服务的 ID。 |
name | 操作的名称。 |
description | 操作的详细说明。 |
supportedEventTypes | 可以使用此操作的触发器类型的数组。 有关详细信息,请参阅 事件类型列表。 |
publishEvent.url | HTTP 消息发送到的 URL。 它可以通过 inputDescriptors 提供的值进行模板化。 其实际值在创建订阅时由用户定义。 |
- 将扩展部署到 Azure DevOps 组织并对其进行测试。