Modèle de contribution
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Les extensions ajoutent de nouvelles fonctionnalités au système en fournissant des contributions et en définissant des façons pour les autres extensions de les connecter. Un type de contribution définit quelque chose qui peut être ajouté au système. Une contribution est une instance spécifique d’un type de contribution. Par exemple, hub
est un type de contribution défini par une extension principale fournie par Microsoft. Le Explorer
hub sous le groupe Build Hub est une contribution spécifique de type hub
.
Pour en savoir plus, consultez les références suivantes :
Types de contribution
Un type de contribution définit un contrat auquel toutes les contributions au système de ce type doivent adhérer. Un type de contribution peut également s’étendre à partir d’un autre type de contribution. Les exemples suivants de types de contribution définissent les propriétés définies par les instances de ce type :
hub
action
build-task
Chaque définition de propriété spécifie les aspects suivants :
- Type de propriété, par exemple chaîne, booléen, et ainsi de suite.
- Indique si la propriété est requise
- Valeur par défaut, si elle n’est pas spécifiée par une contribution (facultative).
Exemple
Voici un exemple de déclaration de type de contribution dans un manifeste d’extension :
{
...
"contributionTypes": [
{
"id": "hub",
"name": "Web Access Hub",
"description": "A hub that appears in the hubs menu at the top of web pages.",
"properties": {
"name": {
"description": "The text to display for the hub",
"type": "string",
"required": true
},
"uri": {
"description": "URI of the contents of the hub page",
"type": "string",
"required": true
},
"order": {
"description": "An optional ordering value which can indicate in which position to place the hub within the hub group",
"type": "integer"
}
...
}
}
]
}
Contributions
Une contribution est une instance d’un type de contribution. Par exemple, le Queries
hub sous le groupe de hubs de travail est une contribution de type hub
et la Publish Test Results
tâche de génération est une contribution de type build-task
.
Toutes les contributions doivent spécifier un type et spécifier des valeurs pour toutes les propriétés requises par ce type de contribution.
Exemple
Voici un exemple de déclaration de contribution hub dans un manifeste d’extension :
{
"contributions": [
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
],
"properties": {
"name": "Explorer",
"uri": "/_build",
"order": 22
}
}
]
}
Contributions cibles
Une contribution peut cibler une ou plusieurs autres contributions, ce qui crée une relation entre la contribution et chacune de ses cibles. Le système peut découvrir des contributions pour la cible au moment de l’exécution. Par exemple, une hub
contribution (Explorer
) peut cibler une contribution spécifique hub-group
(Build
).
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
]
}
Lorsque le groupe hub s’affiche, le système peut interroger toutes les contributions hub qui ciblent le groupe hub pour savoir quels hubs effectuer le rendu.
Identifier les contributions et les types
Chaque type de contribution et de contribution doit avoir un ID unique dans l’extension dans laquelle il est déclaré.
Un identificateur de contribution complet inclut les éléments suivants, que vous séparez par un point .
:
- ID de l’éditeur
- ID d'extension
- Contribution/type ID
Par exemple : ms.vss-web.hub
est l’identificateur complet de la contribution suivante :
- ID de l’éditeur :
ms
- ID d’extension :
vss-web
- ID de contribution/type :
hub
Vous pouvez utiliser des références relatives de contribution au sein d’un manifeste d’extension pour la référence d’une contribution à un autre type de contribution ou de contribution dans cette même extension. Dans ce cas, les ID d’éditeur et d’extension ne sont pas inclus, et l’ID est un point .
suivi de l’ID de contribution. Par exemple, .hub
peut être utilisé dans l’extension vss-web
mentionnée précédemment comme raccourci pour ms.vss-web.hub
.