Modelo de contribución

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2017

Las extensiones agregan nuevas funcionalidades al sistema proporcionando contribuciones y definiendo maneras de 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 de concentradores de compilación es una contribución específica de tipo hub .

Sugerencia

Consulte nuestra documentación más reciente sobre el desarrollo de extensiones mediante el SDK Azure DevOps Extension.

Tipos de contribución

Un tipo de contribución define un contrato al que deben cumplirse todas las contribuciones al sistema de ese tipo. hub, action y son todos ejemplos de tipos de build-task contribución. Los tipos definen las propiedades establecidas por instancias de ese tipo. Cada definición de propiedad indica el tipo de la propiedad (cadena, booleano, etc.), si la propiedad es necesaria y, opcionalmente, especifica un valor predeterminado si no se especifica mediante una contribución. Un tipo de contribución también puede extenderse desde otro tipo de contribución.

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 centro en el grupo centro de trabajo es una contribución de tipo y la tarea de compilación Querieshub es una Publish Test Results contribución de tipo build-task .

Todas las contribuciones deben especificar un tipo y especificar valores para las propiedades requeridas por ese tipo de contribución.

Ejemplo

Este es un ejemplo de una declaración de contribución de concentrador 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 más contribuciones. Esto crea una relación entre la contribución y cada uno de sus destinos que permite al sistema detectar contribuciones para el destino en tiempo de ejecución. Por ejemplo, una hub contribución ( Explorer ) podría tener como destino una contribución específica ( hub-groupBuild ).

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

Cuando se representa el grupo de concentradores, el sistema puede consultar todas las contribuciones de concentrador que tienen como destino el grupo de concentradores para saber qué centros se representan.

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 el identificador del publicador, el identificador de extensión y el identificador de tipo/contribución, separados por un punto (.). Por ejemplo: "ms.vss-web.hub" es el identificador completo de la contribución con el identificador de en la extensión publicada por el publicador hubvss-webms (Microsoft).

Las referencias de contribución relativas se pueden usar 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, no se incluyen los identificadores de publicador y extensión, y el identificador es un punto (.). seguido del identificador de contribución. Por ejemplo, se puede usar ".hub" dentro de la extensión "vss-web" mencionada anteriormente como acceso directo para "ms.vss-web.hub".