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".
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.
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
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. |
- Distribuire l'estensione nell'organizzazione di Azure DevOps e testarla.