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
.