Udostępnij za pośrednictwem


Tworzenie niestandardowego konsumenta dla punktów zaczepienia usługi

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

Za pomocą punktów zaczepienia usług można powiadamiać systemy innych firm o zdarzeniach występujących w projekcie. Możesz użyć niestandardowego konsumenta, aby wysłać komunikat HTTP do punktu końcowego zdefiniowanego w manifeście rozszerzenia.

W tym artykule opisano tworzenie rozszerzenia, które implementuje przykładową usługę konsumenta, która obejmuje następujące zdarzenia i akcje.

  • Obsługiwane zdarzenia, które wyzwalają następujące akcje:
    • Wypchnięty kod
    • Utworzone żądanie ściągnięcia
    • Zaktualizowano żądanie ściągnięcia
  • Obsługiwane akcje do wykonania w przypadku wystąpienia zdarzeń:
    • Wykonaj akcję (Wyślij komunikat HTTP)

Uwaga

W tym artykule odwołujemy się do katalogu macierzystego projektu jako "strona główna".

Przykładowa usługa konsumenta

Aby uzyskać więcej informacji, zobacz przykładowe repozytorium GitHub rozszerzenia. Aby uzyskać listę wszystkich obsługiwanych zdarzeń, których można użyć jako wyzwalaczy dla niestandardowego rozszerzenia odbiorcy, zobacz Lista typów zdarzeń.

Napiwek

Zapoznaj się z naszą najnowszą dokumentacją dotyczącą programowania rozszerzeń przy użyciu zestawu SDK rozszerzenia usługi Azure DevOps.

Jak działają punkty zaczepienia usługi

Wydawcy punktów zaczepienia usługi definiują zestaw zdarzeń. Subskrypcje nasłuchiwać i czekać na zdarzenia i definiować akcje po wyzwoleniu zdarzenia.

Diagram punktów zaczepienia usługi

Jest to ogólny opis sposobu działania wszystkich implementacji punktów zaczepienia usługi. W naszym przypadku określamy naszego konsumenta zdefiniowanego przez rozszerzenie, a także określoną akcję w przypadku wystąpienia zdarzenia.

Tworzenie rozszerzenia

  1. Zobacz, jak utworzyć rozszerzenie od podstaw.

  2. Dodaj konkretny wkład do niestandardowej implementacji odbiorcy do podstawowego pliku manifestu. Zapoznaj się z poniższym przykładem sposobu, w jaki manifest powinien wyglądać po dodaniu udziału.

{
    "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"
                        }
                    }
                ]
            }
        }
    ]
}

Uwaga

Pamiętaj, aby zaktualizować publisher właściwość .

Dla każdego udziału w rozszerzeniu manifest definiuje następujące elementy.

  • Typ udziału — usługa konsumenta (ms.vss-servicehooks.consumer) w tym przypadku
  • Docelowy udział — usługi konsumenckie (ms.vss-servicehooks.consumer) w tym przypadku
  • Właściwości specyficzne dla każdego typu współtworzenia

Użytkownicy mają następujące właściwości.

Właściwości opis
identyfikator Unikatowy identyfikator usługi konsumenckiej.
name Nazwa użytkownika niestandardowego, który jest widoczny podczas tworzenia subskrypcji przypinania usługi.
opis Opisuje usługę konsumenta.
informationUrl Znajdź więcej informacji na temat rozszerzenia.
inputDescriptors Dane wejściowe, które mają być używane przez użytkowników tworzących subskrypcje z usługą konsumenta.
akcje Opisuje akcje do wykonania i które zdarzenia wyzwalają te akcje.

Akcje dla konsumenta mają następujące właściwości:

Właściwości opis
identyfikator Identyfikator usługi akcji.
name Nazwa akcji.
opis Szczegółowy opis akcji.
supportedEventTypes Tablica typów wyzwalaczy, dla których można użyć tej akcji. Aby uzyskać więcej informacji, zobacz Lista typów zdarzeń.
publishEvent.url Adres URL, do którego jest wysyłany komunikat HTTP. Można go szablonować według wartości dostarczonych przez klasy inputDescriptor. Ich rzeczywiste wartości są definiowane przez użytkownika podczas tworzenia subskrypcji.
  1. Wdróż rozszerzenie w organizacji usługi Azure DevOps i przetestuj je.

Następne kroki