Modelo de contribución
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Las extensiones agregan nuevas funcionalidades al sistema proporcionando contribuciones y definiendo formas para que otras extensiones se conecten a ellas. Un tipo de contribución define algo que se puede agregar al sistema. Una contribución es una instancia específica de un tipo de contribución. Por ejemplo, hub
es un tipo de contribución definido por una extensión básica proporcionada por Microsoft. El Explorer
centro en el grupo concentrador de compilación es una contribución específica del tipo hub
.
Para obtener más información, consulte las referencias siguientes:
Tipos de contribución
Un tipo de contribución define un contrato al que deben adherirse todas las contribuciones al sistema de ese tipo. Un tipo de contribución también puede extenderse desde otro tipo de contribución. En los ejemplos siguientes de tipos de contribución se definen las propiedades establecidas por instancias de ese tipo:
hub
action
build-task
Cada definición de propiedad especifica los siguientes aspectos:
- Tipo de propiedad, por ejemplo, cadena, booleano, etc.
- Indica si se requiere la propiedad
- Valor predeterminado, si no se especifica mediante una contribución (opcional).
Ejemplo
Este es un ejemplo de una declaración de tipo de contribución en un manifiesto de extensión:
{
...
"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"
}
...
}
}
]
}
Contribuciones
Una contribución es una instancia de un tipo de contribución. Por ejemplo, el Queries
centro en el grupo centro de trabajo es una contribución de tipo hub
y la Publish Test Results
tarea de compilación es una contribución de tipo build-task
.
Todas las contribuciones deben especificar un tipo y especificar valores para las propiedades necesarias para ese tipo de contribución.
Ejemplo
Este es un ejemplo de una declaración de contribución del centro en un manifiesto de extensión:
{
"contributions": [
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
],
"properties": {
"name": "Explorer",
"uri": "/_build",
"order": 22
}
}
]
}
Contribuciones de destino
Una contribución puede tener como destino una o varias contribuciones, lo que crea una relación entre la contribución y cada uno de sus objetivos. El sistema puede detectar contribuciones para el destino en tiempo de ejecución. Por ejemplo, una contribución (Explorer
) podría tener como hub
destino una contribución específica hub-group
(Build
).
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
]
}
Cuando se representa el grupo concentrador, el sistema puede consultar todas las contribuciones del centro que tienen como destino el grupo concentrador para saber qué concentradores se van a representar.
Identificación de contribuciones y tipos
Cada tipo de contribución y contribución debe tener un identificador único dentro de la extensión en la que se declara.
Un identificador de contribución completo incluye los siguientes elementos, que se separan con un punto .
:
- Id. del editor
- Id. de extensión
- Id. de contribución y tipo
Por ejemplo: ms.vss-web.hub
es el identificador completo de la siguiente contribución:
- Id. del publicador:
ms
- Id. de extensión:
vss-web
- Identificador de contribución/tipo:
hub
Puede usar referencias de contribución relativas dentro de un manifiesto de extensión para la referencia de una contribución a otro tipo de contribución o contribución dentro de esa misma extensión. En este caso, los identificadores de editor y extensión no se incluyen y el identificador es un punto .
seguido del identificador de contribución. Por ejemplo, .hub
puede usarse dentro de la vss-web
extensión mencionada anteriormente como acceso directo para ms.vss-web.hub
.