Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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).
- Exemple d’extension Azure DevOps (GitHub) : exemple de démarrage compact qui illustre les modèles d’extension courants : https://github.com/microsoft/azure-devops-extension-sample
- Exemples d’extensions Azure DevOps (collection héritée et guide des contributions) : installez pour examiner les cibles de l'interface utilisateur, ou consultez la source : https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guidehttps://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Exemples Microsoft Learn (parcourir des exemples Azure DevOps) : organisés, des exemples à jour dans les documents Microsoft : /samples/browse/?terms=azure%20devops%20extension
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.
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.
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
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. |
- Déployez votre extension dans votre organisation Azure DevOps et testez-la.