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.