Skapa en anpassad konsument för servicekrokar

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

Använd tjänstkrokar för att meddela externa system om händelser i ditt Azure DevOps-projekt. Ett anpassat konsumenttillägg skickar ett HTTP POST till en slutpunkt som du konfigurerar när specifika händelser inträffar.

Tips

Om du startar ett nytt Azure DevOps-tillägg kan du prova dessa underhållsexempelsamlingar först – de fungerar med aktuella produktversioner och täcker moderna scenarier (till exempel att lägga till flikar på sidor med pull-begäranden).

Installera det i en personlig organisation eller testorganisation om ett exempel inte fungerar i din organisation och jämför mål-ID för tilläggsmanifestet och API-versioner med de aktuella dokumenten. För referens och API:er, se:

Den här artikeln visar hur du skapar ett tillägg som implementerar en exempelkonsumenttjänst. Den exempel konsumenten:

  • Lyssnar efter tre Git-händelser: kod som pushats, pull-förfrågan har skapats och pull-förfrågan har uppdaterats.
  • Skickar ett HTTP POST med händelsenyttolasten till en konfigurerbar slutpunkts-URL

Diagram som visar ett exempel på en konsumenttjänst som skickar HTTP-meddelanden för händelser med kod push- och pull-begäranden.

För komplett källkod, se GitHub-repo för tilläggsexempel. Alla tillgängliga händelsetyper finns i Service Hook-händelsetyper.

Tips

För den senaste utvecklingsvägledningen för tillägg, inklusive teman och migrering från VSS. SDK, se utvecklarportalen för Azure DevOps Extension SDK.

Så här fungerar service-krokar

Tjänstkrokar har tre komponenter:

  • Utgivare genererar händelser, till exempel "kod som pushas" eller "pull-begäran har skapats".
  • Prenumerationer matchar specifika händelser med åtgärder.
  • Konsumenter definierar vilka åtgärder som ska köras, till exempel att skicka en HTTP POST.

Diagram som visar flödet för service-hook: utgivare genererar händelser, prenumerationer som matchar händelser, och åtgärder körs när en händelse matchar en prenumeration.

I den här artikeln implementerar tillägget en anpassad konsument. När en matchande händelse inträffar skickar konsumenten ett HTTP POST med händelsenyttolasten till slutpunkts-URL:en som konfigurerats i prenumerationen.

Skapa tillägget

1. Konfigurera projektet

Skapa ditt tilläggsprojekt. Anvisningar finns i Utveckla ett webbtillägg.

2. Lägg till konsumentbidraget

Lägg till konsumentbidraget i manifestfilen (vss-extension.json). I följande exempel visas ett fullständigt manifest med en servicehook-konsument.

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

Anmärkning

Uppdatera egenskapen så att den publisher matchar ditt utgivar-ID.

Matrisen contributions är nyckelavsnittet. Varje bidrag definierar:

  • Typ: ms.vss-servicehooks.consumer – registrerar en konsumenttjänst
  • Mål: ms.vss-servicehooks.consumers – insamlingen av konsumenttjänster
  • Egenskaper: Konsumentkonfiguration, inklusive indata och åtgärder (se egenskapsreferens)

3. Paketera, publicera och testa

Paketera och publicera tillägget till din Azure DevOps-organisation. Skapa sedan en service hook-prenumeration som använder din anpassade konsumentmodul för att säkerställa att den fungerar.

Egenskapsreferens

Konsumentegenskaper

Fastighet Beskrivning
Id-nummer Unikt ID för konsumenttjänsten.
namn Visningsnamn som visas när användare skapar prenumerationer på service hooks.
beskrivning Beskriver konsumenttjänsten.
informationsURL URL där användarna kan lära sig mer om tillägget.
inmatningsbeskrivningar Indata som användarna anger när de skapar prenumerationer (till exempel en URL-slutpunkt).
Åtgärder Åtgärder som ska vidtas när händelser inträffar och vilka händelsetyper som utlöser varje åtgärd.

Åtgärdsegenskaper

Varje åtgärd i matrisen actions har följande egenskaper:

Fastighet Beskrivning
Id-nummer Unikt ID för åtgärden.
namn Åtgärdens visningsnamn.
beskrivning Beskrivning av vad åtgärden gör.
stödjade händelsetyper Matris med händelsetyps-ID:t som utlöser den här åtgärden. Tillgängliga typer finns i Service Hook-händelsetyper.
publishEvent.url Slutpunkts-URL som tar emot HTTP POST. Använd mustaschsyntaxen för tre klammerparenteser ({{{inputId}}}) för att ersätta värden från inputDescriptors som användare tillhandahåller när de skapar prenumerationen.

Nästa steg