Udostępnij przez


Tworzenie niestandardowego konsumenta dla punktów zaczepienia usługi

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Użyj punktów zaczepienia usług, aby powiadomić systemy firmy innej niż Microsoft o zdarzeniach występujących w projekcie. Niestandardowy użytkownik wysyła komunikat HTTP do punktu końcowego zdefiniowanego w manifeście rozszerzenia.

Wskazówka

Jeśli rozpoczynasz nowe rozszerzenie dla Azure DevOps, wypróbuj najpierw te utrzymywane przykładowe kolekcje — działają one z aktualnymi kompilacjami produktu i obejmują nowoczesne scenariusze, takie jak dodawanie kart na stronach żądań pull request.

Jeśli przykładowa aplikacja nie działa w Twojej organizacji, zainstaluj ją w organizacji testowej lub osobistej i porównaj docelowe identyfikatory oraz wersje API manifestu rozszerzenia z bieżącymi dokumentami. Aby uzyskać informacje i interfejsy API, sprawdź:

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ń:
    • Wysyłanie komunikatu HTTP

Uwaga / Notatka

Ten artykuł odnosi się do katalogu macierzystego projektu jako strony głównej.

Diagram przedstawiający przykładową usługę klienta wysyłającą komunikaty HTTP dla zdarzeń push i pull requestów.

Aby uzyskać więcej informacji, zobacz repozytorium GitHub z przykładem 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ń.

Wskazówka

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

Jak działają haki serwisowe

Wydawcy hooków usługowych definiują zestaw zdarzeń. Subskrypcje nasłuchują zdarzeń i definiują akcje uruchamiane po wyzwoleniu zdarzenia.

Diagram przedstawiający przepływ punktów zaczepienia usługi: wydawcy emitują zdarzenia, subskrypcje pasują do zdarzeń i akcje są uruchamiane, gdy zdarzenie jest zgodne z subskrypcją.

Ten diagram przedstawia ogólny przepływ hooków serwisowych: wydawcy emitują zdarzenia, subskrypcje dopasowują zdarzenia, a akcje są uruchamiane po wystąpieniu dopasowania. W przykładzie z tego artykułu rozszerzenie implementuje konsumenta. W przypadku wystąpienia obsługiwanego zdarzenia skonfigurowana akcja odbiorcy wysyła komunikat HTTP do punktu końcowego określonego w manifeście rozszerzenia.

Tworzenie rozszerzenia

  1. Zobacz, jak utworzyć rozszerzenie od podstaw.

  2. Dodaj specyficzny wkład dotyczący niestandardowej implementacji odbiorcy do podstawowego pliku manifestu. Zobacz poniższy przykład, jak manifest powinien wyglądać po dodaniu wkładu.

{
    "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 / Notatka

Pamiętaj, aby zaktualizować publisher atrybut.

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.
  • Element docelowy wkładu — usługi konsumenckie (ms.vss-servicehooks.consumers) w tym przypadku.
  • Właściwości specyficzne dla każdego typu wkładu.

Konsumenci mają następujące właściwości.

Majątek Opis
id Unikatowy identyfikator usługi konsumenckiej.
nazwa Nazwa niestandardowego klienta, która jest widoczna podczas tworzenia subskrypcji webhook.
opis Opisuje usługę konsumenta.
URL informacji Znajdź więcej informacji na temat rozszerzenia.
deskryptory wejścia Dane wejściowe, które mają być używane przez użytkowników tworzących subskrypcje z usługą dla konsumenta.
działania Opisuje akcje do wykonania i które zdarzenia wyzwalają te akcje.

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

Majątek Opis
id Identyfikator dla twojej usługi akcji.
nazwa Nazwa akcji.
opis Szczegółowy opis akcji.
obsługiwaneTypyZdarzeń 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 punktu końcowego, który odbiera komunikat HTTP. Tę wartość można szablonować przy użyciu tokenów z elementu inputDescriptors; użytkownicy udostępniają rzeczywiste wartości podczas tworzenia subskrypcji.
  1. Wdróż rozszerzenie w organizacji usługi Azure DevOps i przetestuj je.

Dalsze kroki