Partager via


Modèle de contribution

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

Les extensions ajoutent des fonctionnalités à Azure DevOps en déclarant des types de contributions et des instances de contribution. Un type de contribution définit un contrat (les propriétés et le comportement) que les contributions de ce type doivent implémenter. Une contribution est une instance concrète d’un type de contribution (par exemple, un hub ou une tâche de génération).

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 :

Pour plus d’informations, consultez :

Types de contributions

Un type de contribution définit les propriétés et les règles que les contributions de ce type doivent suivre. Un type de contribution peut étendre un autre type de contribution, hériter de ses propriétés.

Les types de contributions courants sont les suivants :

  • hub
  • action
  • build-task

Chaque définition de propriété inclut :

  • type de propriété (par exemple, chaîne ou booléen)
  • si la propriété est requise
  • valeur par défaut facultative

Example

Une déclaration de type de contribution dans un manifeste ressemble à ceci :

{
  "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": "Optional ordering value indicating the hub's position 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.

Example

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 du serveur de publication
  • ID d’extension
  • Type d'identifiant de contribution

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.