Bijdragemodel

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

Extensies voegen mogelijkheden toe aan Azure DevOps via bijdragen en bijdragetypen die zijn gedeclareerd in het extensiemanifest. Een bijdragetype definieert een contract: de eigenschappen en het gedrag die bijdragen van dat type moeten implementeren. Een bijdrage is een concreet exemplaar van een bijdragetype (bijvoorbeeld een hub of een build-taak).

Aanbeveling

Als u een nieuwe Azure DevOps-extensie start, kunt u deze onderhouden voorbeeldverzamelingen eerst proberen. Ze werken met de huidige productversies en behandelen moderne scenario's (bijvoorbeeld tabbladen toevoegen op pull-aanvraagpagina's).

Als een voorbeeld niet werkt in uw organisatie, installeert u het in een persoonlijke organisatie of testorganisatie en vergelijkt u de doel-id's en API-versies van het extensiemanifest met de huidige documenten. Zie voor naslaginformatie en API's:

Voor meer informatie, zie:

Bijdragetypen

Een bijdragetype definieert de eigenschappen en regels die bijdragen van dat type moeten volgen. Bijdragetypen kunnen andere bijdragetypen uitbreiden, waarbij hun eigenschappen worden overgenomen.

Algemene ingebouwde bijdragetypen zijn onder andere:

  • ms.vss-web.hub — een pagina in de webgebruikersinterface
  • ms.vss-web.action — een menuactie
  • ms.vss-distributed-task.task — een build-/releasetaak

Elke eigenschapsdefinitie in een bijdragetype geeft het volgende op:

  • type — het gegevenstype (bijvoorbeeld string, boolean, integer)
  • vereist : of de eigenschap moet worden opgegeven
  • standaard : een optionele standaardwaarde

Voorbeeld van bijdragetype

Een declaratie van een bijdragetype in een manifest ziet er als volgt uit:

{
  "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"
        }
      }
    }
  ]
}

Bijdragen

Een bijdrage is een exemplaar van een bijdragetype. De hub onder de werkhubgroep is bijvoorbeeld Queries een bijdrage van het type ms.vss-web.huben de Publish Test Results build-taak is een bijdrage van het type ms.vss-distributed-task.task.

Elke bijdrage moet een type opgeven en waarden opgeven voor alle eigenschappen die voor dat type zijn vereist.

Voorbeeld van bijdrage

Met de volgende declaratie voor hubbijdragen in een uitbreidingsmanifest wordt een hub met de naam 'Explorer' toegevoegd aan een build-hubgroep:

{
    "contributions": [
        {
            "id": "build-explorer-hub",
            "type": "ms.vss-web.hub",
            "targets": [
                ".build-hub-group"
            ],
            "properties": {
                "name": "Explorer",
                "uri": "/_build",
                "order": 22
            }
        }
    ]
}

Doelbijdragen

Een bijdrage kan gericht zijn op een of meer andere bijdragen, waardoor een bovenliggende-onderliggende relatie ontstaat. Het systeem detecteert deze relaties tijdens runtime om te bepalen wat er moet worden weergegeven. Een bijdrage is bijvoorbeeld hub gericht op een hub-group bijdrage, zodat het systeem weet welke hubs bij welke groep horen.

{
    "id": "build-explorer-hub",
    "type": "ms.vss-web.hub",
    "targets": [
        ".build-hub-group"
    ]
}

Wanneer de hubgroep wordt weergegeven, voert het systeem query's uit voor alle hubbijdragen die erop gericht zijn om te bepalen welke hubs moeten worden weergegeven.

Bijdrage-identificaties

Elk bijdrage- en bijdragetype moet een unieke id hebben binnen de extensie.

Een volledig gekwalificeerde id heeft drie delen, gescheiden door puntjes (.):

Onderdeel Example
Uitgever-id ms
Extensie-ID vss-web
Bijdrage/type-ID hub

Volledige identificatiecode: ms.vss-web.hub

Binnen hetzelfde uitbreidingsmanifest kunt u relatieve verwijzingen gebruiken, een punt gevolgd door de bijdrage-id. Bijvoorbeeld, .hub is een snelkoppeling voor ms.vss-web.hub wanneer deze in de vss-web extensie wordt gebruikt.