Partager via


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 informer les systèmes non-Microsoft des événements qui se produisent dans votre projet. Un consommateur personnalisé envoie un message HTTP au point de terminaison défini dans le manifeste de votre extension.

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 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)
    • Pull request créée
    • Demande de tirage mise à jour
  • Actions prises en charge lorsque des événements se produisent :
    • Envoyer un message HTTP

Remarque

Cet article fait référence au répertoire d’accueil de votre projet en tant que base de données.

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

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, vous pouvez utiliser comme déclencheurs pour votre extension consommateur personnalisée, consultez liste des types d’événements.

Conseil / Astuce

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 les événements et définissent des actions qui sont exécutées lorsqu’un événement se déclenche.

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.

Ce diagramme montre le flux de hook de service général : les éditeurs émettent des événements, des abonnements correspondent aux événements et des actions s’exécutent lorsqu’une correspondance se produit. Dans l’exemple de cet article, une extension implémente le consommateur. Lorsqu’un événement pris en charge se produit, l’action configurée du consommateur envoie un message HTTP au point de terminaison que vous spécifiez dans le manifeste d’extension.

Créer l’extension

  1. Découvrez comment créer votre extension à partir de zéro.

  2. Ajoutez la contribution spécifique pour l'implémentation client personnalisée à votre fichier manifeste de base. Consultez l’exemple suivant de la façon dont votre manifeste devrait ressembler après l’ajout de 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"
                        }
                    }
                ]
            }
        }
    ]
}

Remarque

N’oubliez pas de mettre à jour la publisher propriété.

Pour chaque contribution de 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 de consommation (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é Descriptif
id ID unique pour votre service consommateur.
nom Nom du consommateur personnalisé, qui est visible lors de la création de l’abonnement de hook de service.
descriptif Décrit votre service consommateur.
informationUrl Trouvez plus d’informations sur votre extension.
descripteursD'entrée Entrées à utiliser par les utilisateurs qui créent des abonnements avec le service consommateur.
actions Décrit les actions à entreprendre et les événements qui déclenchent ces actions.

Les actions pour votre consommateur ont les propriétés suivantes :

Propriété Descriptif
id ID de votre service d’action.
nom Nom de l’action.
descriptif 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 du point de terminaison qui reçoit le message HTTP. Vous pouvez modèler cette valeur avec des jetons à partir du inputDescriptors; les utilisateurs fournissent les valeurs réelles lorsqu’ils créent l’abonnement.
  1. Déployez votre extension dans votre organisation Azure DevOps et testez-la.

Étapes suivantes