Creare un consumer personalizzato per gli hook del 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 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:
    • Push del codice
    • 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 consumer di esempio

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

Suggerimento

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

Funzionamento degli hook del servizio

Gli autori di hook del servizio definiscono un set di eventi. Le sottoscrizioni sono in ascolto e attendono gli eventi e definiscono le azioni per quando viene attivato l'evento.

Diagramma degli hook del servizio

Questa è una descrizione generale del funzionamento di tutte le implementazioni degli hook del servizio. In questo caso, si specifica il consumer definito da un'estensione, nonché l'azione specificata per quando si verifica un evento.

Creare l'estensione

  1. Scopri come creare l'estensione da zero.

  2. Aggiungere il contributo specifico per l'implementazione personalizzata del consumer al file manifesto 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

Ricordarsi di aggiornare la publisher proprietà.

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

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

I consumer hanno le proprietà seguenti.

Proprietà Descrizione
id ID univoco per il servizio consumer.
name Nome del consumer personalizzato, visibile durante la creazione della sottoscrizione hook del servizio.
description Descrive il servizio consumer.
informationUrl Altre informazioni sull'estensione.
inputDescriptors Input da usare dagli utenti che creano sottoscrizioni con il servizio consumer.
actions Descrive le azioni da eseguire e quali eventi attivano tali azioni.

Le azioni per il consumer hanno le proprietà seguenti:

Proprietà Descrizione
id ID per il servizio azioni.
name Nome dell'azione.
description Descrizione dettagliata dell'azione.
supportedEventTypes 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 basato su modelli in base ai valori forniti da 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