Compartir a través de


Modelo de contribución

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Las extensiones agregan funcionalidades a Azure DevOps mediante la declaración de tipos de contribución y instancias de contribución. Un tipo de contribución define un contrato (las propiedades y el comportamiento) que deben implementar las contribuciones de ese tipo. Una contribución es una instancia concreta de un tipo de contribución (por ejemplo, un concentrador o una tarea de compilación).

Sugerencia

Si va a iniciar una nueva extensión de Azure DevOps, pruebe primero estas colecciones de ejemplo mantenidas: funcionan con compilaciones de productos actuales y cubren escenarios modernos (por ejemplo, agregar pestañas en páginas de solicitud de incorporación de cambios).

Si un ejemplo no funciona en su organización, instálelo en una organización personal o de prueba y compare los identificadores de destino y las versiones de API del manifiesto de extensión con los documentos actuales. Para obtener referencia y API, consulte:

Para obtener más información, consulte:

Tipos de contribución

Un tipo de contribución define las propiedades y reglas que deben seguir las contribuciones de ese tipo. Un tipo de contribución puede extender otro tipo de contribución, heredando sus propiedades.

Entre los tipos de contribución comunes se incluyen:

  • hub
  • action
  • build-task

Cada definición de propiedad incluye:

  • tipo de propiedad (por ejemplo, cadena o booleano)
  • si se requiere la propiedad
  • un valor predeterminado opcional

Example

Una declaración de tipo de contribución en un manifiesto tiene este aspecto:

{
  "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": "Optional ordering value indicating the hub's position 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.

Example

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 objetivo

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 (hub) podría tener como Explorer 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 de concentradores, el sistema puede consultar todas las contribuciones del concentrador que tienen como destino el grupo de concentradores para determinar qué concentradores se van a representar.

Identificación de contribuciones y tipos

Cada contribución y su tipo deben 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 publicador
  • Id. de extensión
  • Id. de contribución/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 contribuciones relativas dentro de un manifiesto de extensión para hacer referencia a una contribución o tipo de contribución en relación con otra 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 se puede usar dentro de la extensión vss-web mencionada anteriormente como atajo para ms.vss-web.hub.