Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
- Esempio di estensione Azure DevOps (GitHub): esempio di avvio compatto che illustra i modelli di estensione comuni: https://github.com/microsoft/azure-devops-extension-sample
- Esempi di estensione Azure DevOps (raccolta legacy e guida ai contributi): installare per esaminare gli obiettivi dell'interfaccia utente o visualizzare l'origine: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guide e https://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Esempi di Microsoft Learn (esplora gli esempi di Azure DevOps)—campioni curati e aggiornati nei documenti di Microsoft: /samples/browse/?terms=azure%20devops%20extension
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:
- azure-devops-extension-api
- azure-devops-extension-sdk
- API di estensione installata
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
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.
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.consumerscollezione 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. |