Créer un consommateur personnalisé pour les hooks de service

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

Utilisez des hooks de service pour notifier les systèmes externes sur les événements de votre projet Azure DevOps. Une extension de consommateur personnalisée envoie une requête HTTP POST à un point de terminaison que vous configurez lorsque des événements spécifiques se produisent.

Conseil / Astuce

Si vous démarrez une nouvelle extension Azure DevOps, essayez d'abord ces collections d'exemples maintenues : elles fonctionnent avec les builds de produit actuels et couvrent les scénarios modernes (par exemple, en ajoutant des onglets sur les pages de requête de tirage).

Si un exemple ne fonctionne pas dans votre organisation, installez-le dans une organisation personnelle ou de test et comparez les ID cibles et les versions d’API du manifeste d’extension avec les documents actuels. Pour obtenir des informations de référence et des API, consultez :

Cet article explique comment créer une extension qui implémente un exemple de service consommateur. L’exemple de consommateur :

  • Écoute trois événements Git : code poussé, proposition de fusion créée et proposition de fusion mise à jour.
  • Envoie une requête HTTP POST avec la charge utile d’événement à une URL de point de terminaison configurable

Diagramme montrant un exemple de service consommateur envoyant des messages HTTP pour les événements d’envoi de code et de pull request.

Pour obtenir la source complète, consultez l’exemple de dépôt GitHub de l’extension. Pour tous les types d’événements disponibles, consultez les types d’événements de hook de service.

Conseil / Astuce

Pour obtenir les dernières instructions de développement d’extension, notamment les thèmes et la migration à partir de VSS. Sdk, consultez le portail du kit de développement logiciel (SDK) d’extension Azure DevOps.

Fonctionnement des hooks de service

Les hooks de service ont trois composants :

  • Les serveurs de publication émettent des événements, tels que « code envoyé (push) » ou « pull request created ».
  • Les abonnements associent des événements spécifiques à des actions.
  • Les consommateurs définissent les actions à exécuter, telles que l’envoi d’une requête HTTP POST.

Diagramme montrant le flux de hook de service : les éditeurs émettent des événements, des abonnements correspondent à des événements et des actions s’exécutent lorsqu’un événement correspond à un abonnement.

Dans cet article, l’extension implémente un consommateur personnalisé. Lorsqu’un événement correspondant se produit, le consommateur envoie une requête HTTP POST avec la charge utile de l’événement à l’URL du point de terminaison configurée dans l’abonnement.

Créer l’extension

1. Configurer le projet

Créez votre projet d’extension. Pour obtenir des instructions, consultez Développer une extension web.

2. Ajouter la contribution du consommateur

Ajoutez la contribution du consommateur à votre fichier manifeste (vss-extension.json). L’exemple suivant présente un manifeste complet avec un client de crochet de service :

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

Remarque

Mettez à jour la propriété pour qu’elle publisher corresponde à votre ID d’éditeur.

Le contributions tableau est la section clé. Chaque contribution définit :

  • Type : — ms.vss-servicehooks.consumer enregistre un service de consommation
  • Cible : ms.vss-servicehooks.consumers — collection de services grand public
  • Propriétés : Configuration du consommateur, y compris les entrées et les actions (voir référence de propriété)

3. Empaqueter, publier et tester

Empaqueter et publier l’extension dans votre organisation Azure DevOps. Créez ensuite un abonnement de hook de service qui utilise votre consommateur personnalisé pour vérifier qu’il fonctionne.

Informations de référence sur les propriétés

Propriétés du consommateur

Propriété Descriptif
id ID unique pour le service consommateur.
nom Nom d’affichage affiché lorsque les utilisateurs créent des abonnements aux webhooks de service.
descriptif Décrit le service consommateur.
informationUrl URL dans laquelle les utilisateurs peuvent en savoir plus sur l’extension.
descripteursD'entrée Entrées que les utilisateurs fournissent lors de la création d’abonnements (par exemple, un point de terminaison d’URL).
actions Actions à effectuer lorsque des événements se produisent et quels types d’événements déclenchent chaque action.

Propriétés d’action

Chaque action du actions tableau a les propriétés suivantes :

Propriété Descriptif
id Identifiant unique de l’action.
nom Nom affiché de l’action.
descriptif Description de ce que fait l’action.
supportedEventTypes Tableau d’ID de type d’événement qui déclenchent cette action. Pour les types disponibles, consultez les types d'événements des hooks de services.
publishEvent.url URL de point de terminaison qui reçoit HTTP POST. Utilisez la syntaxe Mustache à triple accolades ({{{inputId}}}) pour remplacer les valeurs fournies par les utilisateurs lors de la création de l’abonnement (inputDescriptors).

Étape suivante