Создание пользовательского потребителя для перехватчиков служб
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
С помощью перехватчиков служб можно уведомить сторонние системы о событиях, происходящих в проекте. Вы можете использовать настраиваемого потребителя для отправки HTTP-сообщения в конечную точку, определенную в манифесте расширения.
В этой статье описывается разработка расширения, реализующего пример службы потребителей, которая включает следующие события и действия.
- Поддерживаемые события, которые активируют следующие действия:
- Код отправлен
- Запрос на вытягивание создан
- Запрос на вытягивание обновлен
- Поддерживаемые действия, выполняемые при возникновении событий:
- Действие "Выполнить" (отправить HTTP-сообщение)
Примечание.
В этой статье мы ссылаемся на домашний каталог проекта как "home".
Дополнительные сведения см. в репозитории GitHub для расширения. Список всех поддерживаемых событий, которые можно использовать в качестве триггеров для пользовательского расширения потребителя, см. в разделе "Список типов событий".
Совет
Ознакомьтесь с нашей новой документацией по разработке расширений с помощью пакета SDK для расширений Azure DevOps.
Как работают перехватчики служб
Издатели перехватчиков служб определяют набор событий. Подписки прослушивают события и ожидают событий и определяют действия при активации события.
Это общее описание работы всех реализаций перехватчика службы. В нашем случае мы указываем потребителя, определяемого расширением, а также указанное действие при возникновении события.
Создание расширения
Добавьте конкретный вклад для пользовательской реализации потребителя в базовый файл манифеста. См. следующий пример того, как манифест должен выглядеть после добавления вклада.
{
"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.consumer) в данном случае
- Свойства, относящиеся к каждому типу вклада
Потребители имеют следующие свойства.
Свойство | Description |
---|---|
id | Уникальный идентификатор для службы потребителей. |
name | Имя настраиваемого потребителя, которое отображается во время создания подписки на перехватчик служб. |
описание | Описывает службу потребителей. |
informationUrl | Дополнительные сведения о расширении. |
inputDescriptors | Входные данные, используемые пользователями, создающими подписки с помощью службы потребителей. |
actions | Описывает действия, которые необходимо предпринять, и какие события активируют эти действия. |
Действия для потребителя имеют следующие свойства:
Свойство | Description |
---|---|
id | Идентификатор службы действий. |
name | Имя действия. |
описание | Подробное описание действия. |
supportedEventTypes | Массив типов триггеров, для которых можно использовать это действие. Дополнительные сведения см. в разделе "Список типов событий". |
publishEvent.url | URL-адрес, в который отправляется HTTP-сообщение. Его можно шаблонировать по значениям, предоставляемым входнымиdescriptorами. Фактические значения определяются пользователем при создании подписки. |
- Разверните расширение в организации Azure DevOps и протестируйте его.