Erstellen eines benutzerdefinierten Consumers für Diensthaken

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

Mit Diensthaken können Sie Drittanbietersysteme über Ereignisse benachrichtigen, die in Ihrem Projekt auftreten. Sie können einen benutzerdefinierten Consumer verwenden, um eine HTTP-Nachricht an den Endpunkt zu senden, der im Manifest der Erweiterung definiert ist.

In diesem Artikel wird die Entwicklung einer Erweiterung beschrieben, die einen Beispiel-Consumerdienst implementiert, der die folgenden Ereignisse und Aktionen enthält.

  • Unterstützte Ereignisse, die die folgenden Aktionen auslösen:
    • Code gepusht
    • Erstellter Pull Request
    • Pull Request aktualisiert
  • Unterstützte Aktionen, die ausgeführt werden sollen, wenn Ereignisse auftreten:
    • Aktion ausführen (HTTP-Nachricht senden)

Hinweis

In diesem Artikel wird das Basisverzeichnis für Ihr Projekt als "Home" bezeichnet.

Beispiel-Consumerdienst

Weitere Informationen finden Sie im GitHub-Repository "Erweiterungsbeispiel". Eine Liste aller unterstützten Ereignisse, die Sie als Trigger für Ihre benutzerdefinierte Consumererweiterung verwenden können, finden Sie unter Liste der Ereignistypen.

Tipp

Sehen Sie sich unsere neueste Dokumentation zur Erweiterungsentwicklung mithilfe des Azure DevOps-Erweiterungs-SDK an.

Funktionsweise von Diensthaken

Service Hook-Herausgeber definieren eine Reihe von Ereignissen. Abonnements lauschen und warten auf die Ereignisse und definieren Aktionen für den Zeitpunkt des Auslösens des Ereignisses.

Diagramm

Dies ist eine allgemeine Beschreibung der Funktionsweise all unserer Service Hook-Implementierungen. In unserem Fall geben wir unseren durch eine Erweiterung definierten Consumer sowie die angegebene Aktion für den Zeitpunkt des Eintretens eines Ereignisses an.

Erstellen der Erweiterung

  1. Erfahren Sie, wie Sie Ihre Erweiterung von Grund auf neu erstellen.

  2. Fügen Sie ihrer grundlegenden Manifestdatei den spezifischen Beitrag für die implementierung eines benutzerdefinierten Consumers hinzu. Sehen Sie sich das folgende Beispiel an, wie Ihr Manifest nach dem Hinzufügen des Beitrags aussehen soll.

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

Hinweis

Denken Sie daran, die publisher Eigenschaft zu aktualisieren.

Für jeden Beitrag in Ihrer Erweiterung definiert das Manifest die folgenden Elemente.

  • Art des Beitrags – Verbraucherdienst (ms.vss-servicehooks.consumer) in diesem Fall
  • Beitragsziel – Verbraucherdienste (ms.vss-servicehooks.consumers) in diesem Fall
  • Eigenschaften, die für jeden Beitragstyp spezifisch sind

Consumer verfügen über die folgenden Eigenschaften.

Eigenschaft BESCHREIBUNG
id Eindeutige ID für Ihren Consumerdienst.
name Name des benutzerdefinierten Consumers, der während der Erstellung eines Diensthakenabonnements angezeigt wird.
Beschreibung Beschreibt Ihren Consumerdienst.
informationUrl Hier finden Sie weitere Informationen zu Ihrer Erweiterung.
inputDescriptors Eingaben, die von Benutzern verwendet werden sollen, die Abonnements mit dem Consumerdienst erstellen.
Aktionen Beschreibt die auszuführenden Aktionen und welche Ereignisse diese Aktionen auslösen.

Aktionen für Ihren Consumer verfügen über die folgenden Eigenschaften:

Eigenschaft BESCHREIBUNG
id ID für Ihren Aktionsdienst.
name Name der Aktion.
Beschreibung Detaillierte Beschreibung der Aktion.
supportedEventTypes Array von Triggertypen, für die diese Aktion verwendet werden kann. Weitere Informationen finden Sie unter Liste der Ereignistypen.
publishEvent.url URL, an die eine HTTP-Nachricht gesendet wird. Sie kann anhand von Werten vorlagen, die von inputDescriptors bereitgestellt werden. Ihre tatsächlichen Werte werden vom Benutzer definiert, wenn das Abonnement erstellt wird.
  1. Stellen Sie Ihre Erweiterung in Ihrer Azure DevOps-Organisation bereit, und testen Sie sie.

Nächste Schritte