Creación de un consumidor personalizado para enlaces de servicio

Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Use enlaces de servicio para notificar a los sistemas externos los eventos del proyecto de Azure DevOps. Una extensión de consumidor personalizada envía un HTTP POST a un punto de conexión que se configura cuando se producen eventos específicos.

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:

En este artículo se muestra cómo crear una extensión que implemente un servicio de consumidor de ejemplo. El consumidor de ejemplo:

  • Escucha tres eventos de Git: código insertado, solicitud de incorporación de cambios creada y solicitud de incorporación de cambios actualizada
  • Envía un HTTP POST con la carga del evento a una dirección URL de punto de conexión configurable.

Diagrama que muestra un servicio de consumidor de ejemplo que envía mensajes HTTP para eventos de solicitud de inserción y extracción de código.

Para obtener el origen completo, consulte el repositorio de GitHub de ejemplo de extensión. Para todos los tipos de eventos disponibles, consulte Tipos de eventos de enlace de servicio.

Sugerencia

Para obtener las instrucciones de desarrollo de extensiones más recientes, incluidas las temáticas y la migración desde VSS. SDK, consulte el portal para desarrolladores del SDK de extensión de Azure DevOps.

Funcionamiento de los enlaces de servicio

Los enlaces de servicio tienen tres componentes:

  • Los publicadores emiten eventos, como "código insertado" o "solicitud de incorporación de cambios creada".
  • Las suscripciones coinciden con eventos específicos para las acciones.
  • Los consumidores definen las acciones que se van a ejecutar, como enviar un HTTP POST.

Diagrama que muestra el flujo del gancho de servicio: los publicadores emiten eventos, los eventos coinciden con las suscripciones, y las acciones se ejecutan cuando un evento coincide con una suscripción.

En este artículo, la extensión implementa un consumidor personalizado. Cuando se produce un evento coincidente, el consumidor envía un HTTP POST con la carga del evento a la dirección URL del punto de conexión configurada en la suscripción.

Creación de la extensión

1. Configurar el proyecto

Cree el proyecto de extensión. Para obtener instrucciones, consulte Desarrollo de una extensión web.

2. Agregar la contribución del consumidor

Agregue la contribución del consumidor al archivo de manifiesto (vss-extension.json). En el ejemplo siguiente se muestra un manifiesto completo con un consumidor de service hook:

{
    "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:

Actualice la propiedad publisher para que coincida con su ID de editor.

La contributions matriz es la sección clave. Cada contribución define:

  • Tipo: : ms.vss-servicehooks.consumer registra un servicio de consumidor
  • Destino: ms.vss-servicehooks.consumers : la recopilación de servicios de consumidor
  • Propiedades: configuración del consumidor, incluidas las entradas y acciones (consulte la referencia de propiedades)

3. Empaquetar, publicar y probar

Empaquete y publique la extensión en su organización de Azure DevOps. A continuación, cree una suscripción de enlace de servicio que use el consumidor personalizado para comprobar que funciona.

Referencia de propiedades

Propiedades del consumidor

Propiedad Descripción
id Identificador único para el servicio de consumidor.
nombre Nombre que se muestra cuando los usuarios crean suscripciones para enlaces de servicio.
descripción Describe el servicio del consumidor.
informationUrl Dirección URL en la que los usuarios pueden obtener más información sobre la extensión.
descriptores de entrada Entradas que los usuarios proporcionan al crear suscripciones (por ejemplo, un endpoint de URL).
Acciones Acciones que se deben realizar cuando se producen eventos y qué tipos de eventos desencadenan cada acción.

Propiedades de acción

Cada acción de la actions matriz tiene las siguientes propiedades:

Propiedad Descripción
id Identificador único de la acción.
nombre Nombre de la acción para mostrar.
descripción Descripción de lo que hace la acción.
tiposDeEventosSoportados Matriz de identificadores de tipo de evento que desencadenan esta acción. Para ver los tipos disponibles, consulte Tipos de eventos de enlace de servicio.
publishEvent.url Dirección URL del punto de conexión que recibe HTTP POST. Usa sintaxis Mustache de llave triple ({{{inputId}}}) para sustituir los valores de inputDescriptors que los usuarios proporcionan al crear una suscripción.

Paso siguiente