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
.