Condividi tramite


Creare un consumatore personalizzato per gli hook di servizio

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

Con gli hook del servizio, è possibile inviare notifiche ai sistemi di terze parti sugli eventi che si verificano nel progetto. È possibile usare un consumer personalizzato per inviare un messaggio HTTP all'endpoint definito nel manifesto dell'estensione.

Questo articolo illustra in dettaglio lo sviluppo di un'estensione che implementa un servizio consumer di esempio , che include gli eventi e le azioni seguenti.

  • Eventi supportati che attivano le azioni seguenti:
    • Codice inviato
    • Richiesta pull creata
    • Richiesta pull aggiornata
  • Azioni supportate da eseguire quando si verificano eventi:
    • Eseguire l'azione (Invia messaggio HTTP)

Nota

In questo articolo si fa riferimento alla home directory del progetto come "home".

Servizio clienti d'esempio

Per ulteriori informazioni, consulta il repository GitHub dell'esempio di estensione . Per un elenco di tutti gli eventi supportati che è possibile usare come trigger per l'estensione consumer personalizzata, vedere Elenco di tipi di eventi.

Suggerimento

Vedere la documentazione più recente sullo sviluppo di estensioni con Azure DevOps Extension SDK.

Come funzionano gli hook di servizio

Gli publisher del servizio definiscono un set di eventi . Le sottoscrizioni restano in ascolto degli eventi e definiscono azioni per quando l'evento viene attivato.

Diagramma degli hook del servizio

Questa è una descrizione generale del funzionamento di tutte le implementazioni degli hook del servizio. In questo caso, specifichiamo il nostro consumer, definito da un'estensione, così come l'azione specificata per il momento in cui si verifica un evento.

Creare l'estensione

  1. Guarda come creare la tua estensione da zero.

  2. Aggiungere il contributo specifico per l'implementazione personalizzata del consumer al file manifest di base . Vedere l'esempio seguente di come il manifesto deve essere curato dopo aver aggiunto il contributo.

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

Nota

Ricorda di aggiornare la proprietà publisher.

Per ogni contributo nell'estensione, il manifesto definisce gli elementi seguenti.

  • Tipo di contributo: servizio per i consumatori (ms.vss-servicehooks.consumer) in questo caso
  • Obiettivo del contributo - servizi per i consumatori (ms.vss-servicehooks.consumers) in questo caso
  • Proprietà specifiche di ogni tipo di contributo

I consumatori hanno le seguenti proprietà.

Proprietà Descrizione
id ID univoco per il servizio consumatore.
nome Nome del consumer personalizzato, visibile durante la creazione della sottoscrizione hook del servizio.
descrizione Descrive il tuo servizio clienti.
UrlInformazioni Trova altre informazioni sulla tua estensione.
descrittoriDiInput Input da usare dagli utenti che creano abbonamenti con il servizio per i consumatori.
Azioni Descrive le azioni da eseguire e quali eventi attivano tali azioni.

Le azioni per il consumatore hanno le proprietà seguenti:

Proprietà Descrizione
id ID per il servizio di azione.
nome Nome dell'azione.
descrizione Descrizione dettagliata dell'azione.
tipiDiEventoSupportati Matrice di tipi di trigger per cui è possibile usare questa azione. Per altre informazioni, vedere Elenco dei tipi di evento.
publishEvent.url URL a cui viene inviato il messaggio HTTP. Può essere modellato utilizzando valori forniti dai inputDescriptors. I valori effettivi vengono definiti dall'utente quando viene creata la sottoscrizione.
  1. Distribuire l'estensione nell'organizzazione di Azure DevOps e testarla.

Passaggi successivi