Dela via


Skapa en anpassad konsument för tjänstkrokar

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

Med tjänstkrokar kan du meddela tredjepartssystem om händelser som inträffar i projektet. Du kan använda en anpassad konsument för att skicka ett HTTP-meddelande till slutpunkten som definieras i tilläggets manifest.

Den här artikeln beskriver hur du utvecklar ett tillägg som implementerar en exempelkonsumenttjänst, som innehåller följande händelser och åtgärder.

  • Händelser som stöds som utlöser följande åtgärder:
    • Kod push-överförd
    • Pull-begäran har skapats
    • Pull-begäran har uppdaterats
  • Åtgärder som stöds när händelser inträffar:
    • Gör-åtgärd (Skicka HTTP-meddelande)

Kommentar

I den här artikeln refererar vi till startkatalogen för projektet som "home".

Exempel på konsumenttjänst

Mer information finns i GitHub-lagringsplatsen för tilläggsexemplet. En lista över alla händelser som stöds som du kan använda som utlösare för ditt anpassade konsumenttillägg finns i Lista över händelsetyper.

Dricks

Läs vår senaste dokumentation om tilläggsutveckling med hjälp av Azure DevOps Extension SDK.

Så här fungerar tjänstkrokar

Service Hook-utgivaredefinierar en uppsättning händelser. Prenumerationer lyssnar och väntar på händelserna och definierar åtgärder för när händelsen utlöses.

Diagram över tjänstkrokar

Det här är en allmän beskrivning av hur alla våra implementeringar av tjänstkrokar fungerar. I vårt fall anger vi vår konsument som definierats av ett tillägg, samt den angivna åtgärden för när en händelse inträffar.

Skapa tillägget

  1. Se hur du skapar tillägget från grunden.

  2. Lägg till det specifika bidraget för anpassad konsumentimplementering i din grundläggande manifestfil. Se följande exempel på hur manifestet ska se ut när du lägger till bidraget.

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

Kommentar

Kom ihåg att uppdatera egenskapen publisher .

För varje bidrag i tillägget definierar manifestet följande objekt.

  • Typ av bidrag – konsumenttjänst (ms.vss-servicehooks.consumer) i det här fallet
  • Bidragsmål – konsumenttjänster (ms.vss-servicehooks.consumers) i det här fallet
  • Egenskaper som är specifika för varje typ av bidrag

Konsumenterna har följande egenskaper.

Property beskrivning
id Unikt ID för din konsumenttjänst.
name Namnet på den anpassade konsumenten, som visas när du skapar en tjänsthookprenumeration.
description Beskriver din konsumenttjänst.
informationUrl Mer information om tillägget finns.
inputDescriptors Indata som ska användas av användare som skapar prenumerationer med konsumenttjänsten.
åtgärder Beskriver vilka åtgärder som ska utföras och vilka händelser som utlöser dessa åtgärder.

Åtgärder för din konsument har följande egenskaper:

Property beskrivning
id ID för din åtgärdstjänst.
name Namnet på åtgärden.
description Detaljerad beskrivning av åtgärden.
supportedEventTypes Matris med utlösartyper som den här åtgärden kan användas för. Mer information finns i Lista över händelsetyper.
publishEvent.url URL där HTTP-meddelande skickas till. Den kan mallas efter värden som tillhandahålls av inputDescriptors. Deras faktiska värden definieras av användaren när prenumerationen skapas.
  1. Distribuera ditt tillägg till din Azure DevOps-organisation och testa det.

Nästa steg