Maak een aangepaste gebruiker voor servicehooks

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

Gebruik servicehook om externe systemen op de hoogte te stellen van gebeurtenissen in uw Azure DevOps-project. Een aangepaste consumentenextensie verzendt een HTTP POST naar een eindpunt dat u configureert wanneer specifieke gebeurtenissen plaatsvinden.

Hint

Als u een nieuwe Azure DevOps-extensie start, kunt u deze onderhouden voorbeeldverzamelingen eerst proberen. Ze werken met de huidige productversies en behandelen moderne scenario's (bijvoorbeeld tabbladen toevoegen op pull-aanvraagpagina's).

Als een voorbeeld niet werkt in uw organisatie, installeert u het in een persoonlijke organisatie of testorganisatie en vergelijkt u de doel-id's en API-versies van het extensiemanifest met de huidige documenten. Zie voor naslaginformatie en API's:

In dit artikel wordt beschreven hoe u een extensie bouwt waarmee een voorbeeldconsumentenservice wordt geïmplementeerd. De voorbeeldgebruiker:

  • Luistert naar drie Git-gebeurtenissen: code gepusht, pull-aanvraag gemaakt en pull-aanvraag bijgewerkt
  • Verzendt een HTTP POST met de nettolading van de gebeurtenis naar een configureerbare eindpunt-URL

Diagram met een voorbeeld van een consumentenservice die HTTP-berichten verzendt voor code-push- en pull-aanvraaggebeurtenissen.

Zie de GitHub-opslagplaats voor het extensievoorbeeld voor de volledige bron. Zie Gebeurtenistypen voor servicehook voor alle beschikbare gebeurtenistypen.

Hint

Voor de nieuwste richtlijnen voor uitbreidingsontwikkeling, inclusief thema's en migratie van VSS. SDK raadpleegt u de ontwikkelaarsportal van de Azure DevOps Extension SDK.

Hoe servicehooks werken

Servicehook heeft drie onderdelen:

  • Uitgevers verzenden gebeurtenissen, zoals 'code gepusht' of 'pull-aanvraag gemaakt'.
  • Abonnementen koppelen specifieke gebeurtenissen aan acties.
  • Consumenten definiëren de acties die moeten worden uitgevoerd, zoals het verzenden van een HTTP POST.

Diagram met de servicehookstroom: uitgevers verzenden gebeurtenissen, abonnementen komen overeen met gebeurtenissen en acties die worden uitgevoerd wanneer een gebeurtenis overeenkomt met een abonnement.

In dit artikel implementeert de extensie een aangepaste consument. Wanneer er een overeenkomende gebeurtenis optreedt, verzendt de consument een HTTP POST met de nettolading van de gebeurtenis naar de eindpunt-URL die in het abonnement is geconfigureerd.

De extensie maken

1. Het project instellen

Maak uw extensieproject. Zie Een webextensie ontwikkelen voor instructies.

2. De bijdrage van de consument toevoegen

Voeg de bijdrage van de consument toe aan uw manifestbestand (vss-extension.json). In het volgende voorbeeld ziet u een volledig manifest met een servicehookgebruiker:

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

Opmerking

Werk de eigenschap bij zodat deze publisher overeenkomt met uw uitgever-id.

De contributions array is de belangrijkste sectie. Elke bijdrage definieert:

  • Type: ms.vss-servicehooks.consumer — registreert een consumentenservice
  • Doel: ms.vss-servicehooks.consumers — de verzameling consumentenservices
  • Eigenschappen: Consumentenconfiguratie, inclusief invoer en acties (zie eigenschapsreferentie)

3. Verpakken, publiceren en testen

Verpak en publiceer de extensie in uw Azure DevOps-organisatie. Maak vervolgens een servicehookabonnement dat gebruikmaakt van uw aangepaste consument om te controleren of het werkt.

Eigenschapsreferentie

Consumenteneigenschappen

Vastgoed Beschrijving
identiteitskaart Unieke id voor de consumentenservice.
naam Weergavenaam die verschijnt wanneer gebruikers service-hookabonnementen maken.
beschrijving Beschrijft de consumentenservice.
informatie-url URL waar gebruikers meer informatie over de extensie kunnen vinden.
invoerbeschrijvingen Invoer die gebruikers opgeven bij het maken van abonnementen (bijvoorbeeld een URL-eindpunt).
Acties Acties die moeten worden uitgevoerd wanneer gebeurtenissen plaatsvinden en welke gebeurtenistypen elke actie activeren.

Actie-eigenschappen

Elke actie in de actions matrix heeft de volgende eigenschappen:

Vastgoed Beschrijving
identiteitskaart Unieke id voor de actie.
naam Weergavenaam van de actie.
beschrijving Beschrijving van wat de actie doet.
ondersteunde gebeurtenistypen Matrix van gebeurtenistype-id's die deze actie activeren. Zie de servicehook-gebeurtenistypen voor beschikbare typen.
publishEvent.url Eindpunt-URL die de HTTP POST ontvangt. Gebruik de Mustache-syntaxis met drie accolades {{{inputId}}} om waarden van inputDescriptors te vervangen die gebruikers opgeven bij het aanmaken van een abonnement.

Volgende stap