Condividi tramite


Creare un consumatore personalizzato per gli hook di servizio

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

Usare gli hook del servizio per inviare notifiche ai sistemi esterni sugli eventi nel progetto Azure DevOps. Un'estensione consumer personalizzata invia un POST HTTP a un endpoint configurato quando si verificano eventi specifici.

Suggerimento

Se si avvia una nuova estensione Di Azure DevOps, provare prima queste raccolte di esempi mantenute, che funzionano con le build di prodotto correnti e coprono scenari moderni, ad esempio aggiungendo schede nelle pagine delle richieste pull.

Se un campione non funziona nella tua organizzazione, installalo in un'organizzazione personale o di test e confronta gli ID di destinazione e le versioni API del manifesto dell'estensione con la documentazione corrente. Per riferimento e API, vedi:

Questo articolo illustra come compilare un'estensione che implementa un servizio consumer di esempio. Il consumatore di esempio:

  • È in ascolto di tre eventi Git: codice sottoposto a push, richiesta pull creata e richiesta pull aggiornata
  • Invia un POST HTTP con il payload dell'evento a un URL dell'endpoint configurabile

Diagramma che mostra un servizio consumer di esempio che invia messaggi HTTP per gli eventi di push del codice e della richiesta pull.

Per il codice sorgente completo, vedere il repository GitHub di esempio di estensione. Per tutti i tipi di eventi disponibili, vedere Tipi di eventi hook del servizio.

Suggerimento

Per le linee guida più recenti per lo sviluppo di estensioni, incluse la tematizzazione e la migrazione da VSS.SDK, vedere il portale per sviluppatori di Azure DevOps Extension SDK.

Come funzionano gli hook di servizio

Gli hook del servizio hanno tre componenti:

  • I server di pubblicazione generano eventi, ad esempio "push del codice" o "richiesta pull creata".
  • Le sottoscrizioni associano eventi specifici ad azioni.
  • I consumer definiscono le azioni da eseguire, ad esempio l'invio di un HTTP POST.

Diagramma che mostra il flusso di hook del servizio: gli editori generano eventi, sottoscrizioni corrispondono agli eventi e le azioni vengono eseguite quando un evento corrisponde a una sottoscrizione.

In questo articolo l'estensione implementa un consumer personalizzato. Quando si verifica un evento corrispondente, il consumer invia un HTTP POST con il payload dell'evento all'URL dell'endpoint configurato nella sottoscrizione.

Creare l'estensione

1. Configurare il progetto

Creare il progetto di estensione. Per istruzioni, vedere Sviluppare un'estensione Web.

2. Aggiungere il contributo dell'utente

Aggiungere il contributo dell'utente al file manifesto (vss-extension.json). L'esempio seguente mostra un manifesto completo con un consumer hook del servizio:

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

Aggiornare la proprietà publisher in modo da corrispondere all'ID editore.

La contributions matrice è la sezione chiave. Ogni contributo definisce:

  • Tipo: ms.vss-servicehooks.consumer — registra un servizio per clienti
  • Destinazione: — ms.vss-servicehooks.consumers collezione di servizi per i consumatori
  • Proprietà: configurazione consumatore, compresi input e azioni (consultare il riferimento alle proprietà)

3. Pacchetto, pubblicazione e test

Creare un pacchetto e pubblicare l'estensione nell'organizzazione Azure DevOps. Quindi crea una sottoscrizione di service hook che utilizzi il consumer personalizzato per verificarne il funzionamento.

Informazioni di riferimento sulle proprietà

Proprietà del consumatore

Proprietà Descrizione
id ID univoco per il servizio consumer.
nome Nome visualizzato quando gli utenti creano sottoscrizioni di hook di servizio.
descrizione Descrive il servizio del consumatore.
UrlInformazioni URL in cui gli utenti possono ottenere altre informazioni sull'estensione.
descrittoriDiInput Input forniti dagli utenti durante la creazione di sottoscrizioni(ad esempio, un endpoint URL).
Azioni Azioni da eseguire quando si verificano eventi e quali tipi di evento attivano ogni azione.

Proprietà dell'azione

Ogni azione nella actions matrice ha le proprietà seguenti:

Proprietà Descrizione
id ID univoco per l'azione.
nome Nome dell'azione visualizzato.
descrizione Descrizione dell'azione.
tipiDiEventoSupportati Matrice di ID del tipo di evento che attivano questa azione. Per i tipi disponibili, vedere Tipi di eventi hook del servizio.
publishEvent.url URL dell'endpoint che riceve HTTP POST. Usare la sintassi Mustache a tre parentesi graffe ({{{inputId}}}) per sostituire i valori che gli utenti forniscono durante la creazione dell'abbonamento.

Passo successivo