Creación de un consumidor personalizado para enlaces de servicio

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

Con los enlaces de servicio, puede notificar a los sistemas de terceros los eventos que se producen en el proyecto. Puede usar un consumidor personalizado para enviar un mensaje HTTP al punto de conexión definido en el manifiesto de la extensión.

En este artículo se explica el desarrollo de una extensión que implementa un servicio de consumidor de ejemplo, que incluye los siguientes eventos y acciones.

  • Eventos admitidos que desencadenan las siguientes acciones:
    • Código insertado
    • Solicitud de incorporación de cambios creada
    • Solicitud de incorporación de cambios actualizada
  • Acciones admitidas para realizar cuando se producen eventos:
    • Acción do (Enviar mensaje HTTP)

Nota

En este artículo, nos referimos al directorio principal del proyecto como "home".

Servicio de consumidor de ejemplo

Para obtener más información, consulte el repositorio de GitHub de ejemplo de extensión. Para obtener una lista de todos los eventos admitidos que puede usar como desencadenadores para la extensión de consumidor personalizada, consulte Lista de tipos de eventos.

Sugerencia

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

Funcionamiento de los enlaces de servicio

Los publicadores de enlaces de servicio definen un conjunto de eventos. Las suscripciones escuchan y esperan los eventos y definen las acciones para cuando se desencadena el evento.

Diagrama de enlaces de servicio

Esta es una descripción general de cómo funcionan todas nuestras implementaciones de enlace de servicio. En nuestro caso, especificamos nuestro consumidor definido por una extensión, así como la acción especificada para cuando se produce un evento.

Creación de la extensión

  1. Vea cómo crear la extensión desde cero.

  2. Agregue la contribución específica para la implementación de consumidor personalizada al archivo de manifiesto básico. Vea el ejemplo siguiente de cómo debe tener el manifiesto después de agregar la contribución.

{
    "manifestVersion": 1,
    "id": "samples-service-hooks-consumer",
    "version": "0.1.2",
    "name": "Service Hooks Sample",
    "description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
    "publisher": "fabrikam",
    "public": false,
    "icons": {
        "default": "images/logo.png"
    },
    "scopes": [],
    "files": [
        {
            "path": "images",
            "addressable": true
        }
    ],
    "content": {
        "details": {
            "path": "readme.md"
        }
    },
    "categories": [
        "Developer samples"
    ],
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "contributions": [
        {
            "id": "consumer",
            "type": "ms.vss-servicehooks.consumer",
            "targets": [
                "ms.vss-servicehooks.consumers"
            ],
            "properties": {
                "id": "consumer",
                "name": "Sample Consumer",
                "description": "Sample consumer service",
                "informationUrl": "https://aka.ms/vsoextensions",
                "inputDescriptors": [
                    {
                        "id": "url",
                        "isRequired": true,
                        "name": "URL",
                        "description": "URL to post event payload to",
                        "inputMode": "textbox"
                    }
                ],
                "actions": [
                    {
                        "id": "performAction",
                        "name": "Perform action",
                        "description": "Posts a standard event payload",
                        "supportedEventTypes": [
                            "git.push",
                            "git.pullrequest.created",
                            "git.pullrequest.updated"
                        ],
                        "publishEvent": {
                            "url": "{{{url}}}",
                            "resourceDetailsToSend": "all",
                            "messagesToSend": "all",
                            "detailedMessagesToSend": "all"
                        }
                    }
                ]
            }
        }
    ]
}

Nota

Recuerde actualizar la publisher propiedad .

Para cada contribución de la extensión, el manifiesto define los siguientes elementos.

  • Tipo de contribución: servicio de consumidor (ms.vss-servicehooks.consumer) en este caso
  • Destino de contribución: servicios de consumidor (ms.vss-servicehooks.consumers) en este caso
  • Propiedades específicas de cada tipo de contribución

Los consumidores tienen las siguientes propiedades.

Propiedad Descripción
id Identificador único para el servicio de consumidor.
name Nombre del consumidor personalizado, que es visible durante la creación de la suscripción de enlace de servicio.
description Describe el servicio de consumidor.
informationUrl Encuentra más información sobre tu extensión.
inputDescriptors Entradas que usarán los usuarios que crean suscripciones con el servicio de consumidor.
actions Describe las acciones que se van a realizar y qué eventos desencadenan esas acciones.

Las acciones para el consumidor tienen las siguientes propiedades:

Propiedad Descripción
id Identificador del servicio de acción.
name Nombre de la acción.
description Descripción detallada de la acción.
supportedEventTypes Matriz de tipos de desencadenador para los que se puede usar esta acción. Para obtener más información, vea Lista de tipos de eventos.
publishEvent.url Dirección URL a la que se envía el mensaje HTTP. Los valores proporcionados por inputDescriptors pueden crear plantillas. Sus valores reales se definen por el usuario cuando se crea la suscripción.
  1. Implemente la extensión en la organización de Azure DevOps y pruebela.

Pasos siguientes