Modelo de contribuição

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

As extensões adicionam novos recursos ao sistema, fornecendo contribuições e definindo maneiras de outras extensões se conectarem a elas. Um tipo de contribuição define algo que pode ser adicionado ao sistema. Uma contribuição é uma instância específica de um tipo de contribuição. Por exemplo, hub é um tipo de contribuição definido por uma extensão principal fornecida pela Microsoft. O Explorer hub sob o grupo Build hub é uma contribuição específica do tipo hub.

Para obter mais informações, veja as seguintes referências:

Tipos de contribuição

Um tipo de contribuição define um contrato ao qual todas as contribuições para o sistema desse tipo devem aderir. Um tipo de contribuição também pode se estender de outro tipo de contribuição. Os seguintes exemplos de tipos de contribuição definem as propriedades definidas por instâncias desse tipo:

  • hub
  • action
  • build-task

Cada definição de propriedade especifica os seguintes aspetos:

  • Tipo de propriedade, por exemplo, string, booleano e assim por diante.
  • Se a propriedade é necessária
  • Valor padrão, se não especificado por uma contribuição (opcional).

Exemplo

Aqui está um exemplo de uma declaração de tipo de contribuição em um manifesto de extensão:

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

Contribuições

Uma contribuição é uma instância de um tipo de contribuição. Por exemplo, o Queries hub no grupo Hub de trabalho é uma contribuição do tipo hub e a Publish Test Results tarefa de compilação é uma contribuição do tipo build-task.

Todas as contribuições devem especificar um tipo e valores para quaisquer propriedades exigidas por esse tipo de contribuição.

Exemplo

Aqui está um exemplo de uma declaração de contribuição de hub em um manifesto de extensão:

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

Contribuições-alvo

Uma contribuição pode visar uma ou mais contribuições, o que cria uma relação entre a contribuição e cada uma das suas metas. O sistema pode descobrir contribuições para o destino em tempo de execução. Por exemplo, uma hub contribuição (Explorer) pode visar uma contribuição específica hub-group (Build).

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

Quando o grupo de hub é renderizado, o sistema pode consultar todas as contribuições de hub destinadas ao grupo de hub para saber quais hubs renderizar.

Identificar contribuições e tipos

Cada contribuição e tipo de contribuição deve ter um ID exclusivo dentro da extensão em que é declarada.

Um identificador de contribuição completo inclui os seguintes itens, que você separa com um ponto . :

  • ID do Publicador
  • ID da extensão
  • ID da contribuição/tipo

Por exemplo: ms.vss-web.hub é o identificador completo da seguinte contribuição:

  • ID do editor: ms
  • ID da extensão: vss-web
  • ID da contribuição/tipo: hub

Você pode usar referências de contribuição relativa dentro de um manifesto de extensão para a referência de uma contribuição a outra contribuição ou tipo de contribuição dentro dessa mesma extensão. Nesse caso, os IDs do editor e da extensão não são incluídos, e o ID é um ponto . seguido pelo ID de contribuição. Por exemplo, .hub pode ser usado dentro da extensão mencionada vss-web anteriormente como um atalho para ms.vss-web.hub.