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.
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).
- 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 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.
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.
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.consumerregistra 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. |