Delen via


Een aangepaste consument maken voor servicehook

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

Met servicehook kunt u systemen van derden op de hoogte stellen van gebeurtenissen die in uw project plaatsvinden. U kunt een aangepaste consument gebruiken om een HTTP-bericht te verzenden naar het eindpunt dat is gedefinieerd in het manifest van de extensie.

In dit artikel wordt uitgelegd hoe u een extensie ontwikkelt waarmee een voorbeeldconsumentenservice wordt geïmplementeerd, waaronder de volgende gebeurtenissen en acties.

  • Ondersteunde gebeurtenissen die de volgende acties activeren:
    • Code gepusht
    • Pull-aanvraag gemaakt
    • Pull-aanvraag bijgewerkt
  • Ondersteunde acties die moeten worden uitgevoerd wanneer gebeurtenissen plaatsvinden:
    • Actie uitvoeren (HTTP-bericht verzenden)

Notitie

In dit artikel verwijzen we naar de basismap voor uw project als 'home'.

Voorbeeld van consumentenservice

Zie de GitHub-opslagplaats voor extensies voor meer informatie. Zie Lijst met gebeurtenistypen voor een lijst met alle ondersteunde gebeurtenissen die u kunt gebruiken als triggers voor uw aangepaste consumentenextensie.

Tip

Bekijk onze nieuwste documentatie over uitbreidingsontwikkeling met behulp van de Azure DevOps Extension SDK.

Hoe servicehook werkt

Uitgevers van servicehook definiëren een set gebeurtenissen. Abonnementen luisteren en wachten op de gebeurtenissen en definiëren acties voor wanneer de gebeurtenis wordt geactiveerd.

Diagram servicehook

Dit is een algemene beschrijving van hoe al onze servicehook-implementaties werken. Voor ons geval geven we onze consument op die is gedefinieerd door een extensie, evenals de opgegeven actie voor wanneer een gebeurtenis plaatsvindt.

De extensie maken

  1. Lees hoe u uw extensie helemaal zelf kunt maken.

  2. Voeg de specifieke bijdrage voor aangepaste implementatie van consumenten toe aan uw basismanifestbestand. Bekijk het volgende voorbeeld van hoe uw manifest eruit moet zien nadat u de bijdrage hebt toegevoegd.

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

Notitie

Vergeet niet om de publisher eigenschap bij te werken.

Voor elke bijdrage in uw extensie definieert het manifest de volgende items.

  • Type bijdrage - consumentenservice (ms.vss-servicehooks.consumer) in dit geval
  • Bijdragedoel - consumentenservices (ms.vss-servicehooks.consumers) in dit geval
  • Eigenschappen die specifiek zijn voor elk type bijdrage

Consumenten hebben de volgende eigenschappen.

Eigenschappen Description
id Unieke id voor uw consumentenservice.
naam De naam van de aangepaste consument, die zichtbaar is tijdens het maken van een servicehookabonnement.
beschrijving Beschrijft uw consumentenservice.
informationUrl Meer informatie over uw extensie.
inputDescriptors Invoer die moet worden gebruikt door gebruikers die abonnementen maken met de consumentenservice.
acties Beschrijft de acties die moeten worden uitgevoerd en welke gebeurtenissen deze acties activeren.

Acties voor uw consument hebben de volgende eigenschappen:

Eigenschappen Description
id Id voor uw actieservice.
naam Naam van de actie.
beschrijving Gedetailleerde beschrijving van de actie.
supportedEventTypes Matrix van triggertypen waarvoor deze actie kan worden gebruikt. Zie Lijst met gebeurtenistypen voor meer informatie.
publishEvent.url URL waarnaar HTTP-bericht wordt verzonden. Het kan worden gesjabloond op waarden die worden geleverd door inputDescriptors. De werkelijke waarden worden gedefinieerd door de gebruiker wanneer het abonnement wordt gemaakt.
  1. Implementeer uw extensie in uw Azure DevOps-organisatie en test deze.

Volgende stappen