Créer un consommateur personnalisé pour les hooks de service
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Avec les hooks de service, vous pouvez informer les systèmes tiers des événements qui se produisent dans votre projet. Vous pouvez utiliser un consommateur personnalisé pour envoyer un message HTTP au point de terminaison défini dans le manifeste de l’extension.
Cet article décrit le développement d’une extension qui implémente un exemple de service consommateur, qui inclut les événements et actions suivants.
- Événements pris en charge qui déclenchent les actions suivantes :
- Code envoyé (push)
- Demande de tirage créée
- Demande de tirage mise à jour
- Actions prises en charge lorsque des événements se produisent :
- Action Do (Envoyer un message HTTP)
Notes
Dans cet article, nous faisons référence au répertoire de base de votre projet en tant que « accueil ».
Pour plus d’informations, consultez l’exemple de dépôt GitHub d’extension. Pour obtenir la liste de tous les événements pris en charge que vous pouvez utiliser comme déclencheurs pour votre extension de consommateur personnalisée, consultez Liste des types d’événements.
Conseil
Consultez notre documentation la plus récente sur le développement d’extensions à l’aide du Kit de développement logiciel (SDK) d’extension Azure DevOps.
Fonctionnement des hooks de service
Les éditeurs de hook de service définissent un ensemble d’événements. Les abonnements écoutent et attendent les événements et définissent des actions pour le moment où l’événement est déclenché.
Il s’agit d’une description générale du fonctionnement de toutes nos implémentations de hook de service. Dans notre cas, nous spécifions notre consommateur défini par une extension, ainsi que l’action spécifiée quand un événement se produit.
Créer l’extension
Ajoutez la contribution spécifique pour l’implémentation consommateur personnalisée à votre fichier manifeste de base. Consultez l’exemple suivant de la façon dont votre manifeste doit ressembler après avoir ajouté la contribution.
{
"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"
}
}
]
}
}
]
}
Notes
N’oubliez pas de mettre à jour la publisher
propriété.
Pour chaque contribution dans votre extension, le manifeste définit les éléments suivants.
- Type de contribution : service consommateur (ms.vss-servicehooks.consumer) dans ce cas
- Cible de contribution : services aux consommateurs (ms.vss-servicehooks.consumers) dans ce cas
- Propriétés spécifiques à chaque type de contribution
Les consommateurs ont les propriétés suivantes.
Propriété | Description |
---|---|
id | ID unique de votre service consommateur. |
name | Nom du consommateur personnalisé, qui est visible lors de la création de l’abonnement de hook de service. |
description | Décrit votre service grand public. |
informationUrl | Trouvez plus d’informations sur votre extension. |
inputDescriptors | Entrées à utiliser par les utilisateurs qui créent des abonnements avec le service consommateur. |
actions | Décrit les actions à effectuer et les événements qui déclenchent ces actions. |
Les actions de votre consommateur ont les propriétés suivantes :
Propriété | Description |
---|---|
id | ID de votre service d’action. |
name | Nom de l'action. |
description | Description détaillée de l’action. |
supportedEventTypes | Tableau de types de déclencheurs pour lesquels cette action peut être utilisée. Pour plus d’informations, consultez Liste des types d’événements. |
publishEvent.url | URL à laquelle le message HTTP est envoyé. Il peut être modèle par des valeurs fournies par inputDescriptors. Leurs valeurs réelles sont définies par l’utilisateur lors de la création de l’abonnement. |
- Déployez votre extension dans votre organisation Azure DevOps et testez-la.