Создание пользовательского потребителя для перехватчиков служб

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

С помощью перехватчиков служб можно уведомить сторонние системы о событиях, происходящих в проекте. Вы можете использовать настраиваемого потребителя для отправки HTTP-сообщения в конечную точку, определенную в манифесте расширения.

В этой статье описывается разработка расширения, реализующего пример службы потребителей, которая включает следующие события и действия.

  • Поддерживаемые события, которые активируют следующие действия:
    • Код отправлен
    • Запрос на вытягивание создан
    • Запрос на вытягивание обновлен
  • Поддерживаемые действия, выполняемые при возникновении событий:
    • Действие "Выполнить" (отправить HTTP-сообщение)

Примечание.

В этой статье мы ссылаемся на домашний каталог проекта как "home".

Пример службы потребителей

Дополнительные сведения см. в репозитории GitHub для расширения. Список всех поддерживаемых событий, которые можно использовать в качестве триггеров для пользовательского расширения потребителя, см. в разделе "Список типов событий".

Совет

Ознакомьтесь с нашей новой документацией по разработке расширений с помощью пакета SDK для расширений Azure DevOps.

Как работают перехватчики служб

Издатели перехватчиков служб определяют набор событий. Подписки прослушивают события и ожидают событий и определяют действия при активации события.

Схема перехватчиков служб

Это общее описание работы всех реализаций перехватчика службы. В нашем случае мы указываем потребителя, определяемого расширением, а также указанное действие при возникновении события.

Создание расширения

  1. Узнайте, как создать расширение с нуля.

  2. Добавьте конкретный вклад для пользовательской реализации потребителя в базовый файл манифеста. См. следующий пример того, как манифест должен выглядеть после добавления вклада.

{
    "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ами. Фактические значения определяются пользователем при создании подписки.
  1. Разверните расширение в организации Azure DevOps и протестируйте его.

Следующие шаги