Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Use enlaces de servicio para notificar a los sistemas que no son de Microsoft los eventos que se producen en el proyecto. Un consumidor personalizado envía un mensaje HTTP al punto de conexión definido en el manifiesto de la extensió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).
- Ejemplo de extensión de Azure DevOps (GitHub): un ejemplo de inicio compacto que muestra patrones de extensión comunes: https://github.com/microsoft/azure-devops-extension-sample
- Ejemplos de extensión de Azure DevOps (guía de colecciones y contribuciones heredadas): instale para inspeccionar los destinos de la interfaz de usuario o vea el origen: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guide y https://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Ejemplos de Microsoft Learn (examinar ejemplos de Azure DevOps)—ejemplos curados y actualizados en Microsoft Docs: /samples/browse/?terms=azure%20devops%20extension
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 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:
- Enviar un mensaje HTTP
Nota:
En este artículo se hace referencia al directorio principal del proyecto como inicio.
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 los eventos y definen acciones que se ejecutan cuando se desencadena un evento.
En este diagrama se muestra el flujo general del hook de servicio: los publicadores emiten eventos, las suscripciones se corresponden con los eventos, y las acciones se ejecutan cuando se produce una coincidencia. En el ejemplo de este artículo, una extensión implementa el consumidor. Cuando se produce un evento admitido, la acción configurada del consumidor envía un mensaje HTTP al punto de conexión especificado en el manifiesto de extensión.
Creación de la extensión
Agregue la contribución específica para la implementación de consumidor personalizada al archivo de manifiesto básico. Consulte el siguiente ejemplo de cómo debe verse 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 propiedad publisher.
Para cada contribución en tu 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 para consumidores (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. |
| nombre | Nombre del consumidor personalizado, que es visible durante la creación de la suscripción de enlace de servicio. |
| descripción | Describe tu servicio al cliente. |
| informationUrl | Encuentra más información sobre tu extensión. |
| descriptores de entrada | Entradas que deben utilizar los usuarios que crean suscripciones del servicio al cliente. |
| Acciones | 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. |
| nombre | Nombre de la acción. |
| descripción | Descripción detallada de la acción. |
| tiposDeEventosSoportados | 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 del punto de conexión que recibe el mensaje HTTP. Puede definir este valor como una plantilla con tokens de inputDescriptors; los usuarios proporcionan los valores reales cuando crean la suscripción. |
- Implemente la extensión en la organización de Azure DevOps y pruóbela.