Modelo de contribuição

Azure DevOps Services | 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 no grupo de hub Build é uma contribuição específica do tipo hub.

Para obter mais informações, consulte 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 exemplos de tipos de contribuição a seguir definem as propriedades definidas por instâncias desse tipo:

  • hub
  • action
  • build-task

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

  • Tipo de propriedade, por exemplo, string, booleano e assim por diante.
  • Se a propriedade é obrigató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 especificar 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 direcionadas

Uma contribuição pode visar uma ou mais outras contribuições, o que cria uma relação entre a contribuição e cada uma de suas metas. O sistema pode descobrir contribuições para o destino em tempo de execução. Por exemplo, uma hub contribuição (Explorer) pode ter como alvo 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 hubs é renderizado, o sistema pode consultar todas as contribuições de hub direcionadas ao grupo de hubs para saber quais hubs renderizar.

Identificar contribuições e tipos

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

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

  • ID do Editor
  • ID de 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 em 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 de editor e 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.