Creación de un punto de conexión de servicio
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Los puntos de conexión de servicio son una manera de que Azure DevOps se conecte a sistemas o servicios externos. Son una agrupación de propiedades almacenadas de forma segura por Azure DevOps, que incluye, pero no se limita a las siguientes propiedades:
- Nombre del servicio
- Descripción
- Dirección URL del servidor
- Certificados o tokens
- Nombres de usuarios y contraseñas
Después, las extensiones pueden usar el punto de conexión de servicio para adquirir los detalles almacenados para realizar las operaciones necesarias en ese servicio. Siga esta guía para crear una nueva contribución de punto de conexión de servicio y usarla en la extensión.
Sugerencia
Consulte nuestra documentación más reciente sobre el desarrollo de extensiones mediante el SDK de extensión de Azure DevOps.
Información general sobre tareas
Puede desarrollar un punto de conexión de servicio mediante la creación de una extensión de ejemplo para Azure DevOps que incluya los siguientes elementos:
- Un punto de conexión de servicio personalizado con orígenes de datos, que permite que una tarea de compilación o un widget de panel llamen a un punto de conexión REST en el servicio o servidor definido por el punto de conexión.
- Una tarea de compilación, que define dos propiedades: el punto de conexión de servicio y una lista desplegable, que tiene valores rellenados desde el origen de datos del punto de conexión REST.
Nota:
Al crear puntos de conexión de servicio, se encuentra en el nivel de proyecto, no en el nivel de organización.
Los pasos necesarios para completar esta tarea son:
- 1. Crear el archivo de manifiesto de extensión
- 2. Crear la canalización de tareas de compilación, en el archivo task.json
Nota:
En este tutorial se hace referencia al directorio principal del proyecto como "home".
Cree el archivo de manifiesto: vss-extension.json
El archivo de manifiesto define el punto de conexión personalizado y los vínculos al manifiesto de task.json para la tarea de compilación.
En este artículo, la creación del archivo de manifiesto se divide en las tres partes siguientes:
- Creación de un punto de conexión de servicio
Creación de un archivo de manifiesto básico
Cree un archivo JSON (vss-extension.json
por ejemplo) en el directorio de la home
extensión.
{
"manifestVersion": 1,
"id": "service-endpoint-tutorial",
"version": "0.1.1",
"name": "Sample extension that leverages a service endpoint",
"description": "A sample Azure DevOps extension which shows how to create a custom endpoint and dynamic build task parameters taking value from a REST API.",
"publisher": "francistotten",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"files": [
{
"path": "BuildTaskFolder"
}
]
}
Nota:
Actualice la propiedad publisher
. BuildTaskFolder
es la ruta de acceso donde eventualmente colocaremos la canalización de tareas de compilación.
Adición de la contribución del punto de conexión personalizado
Agregue la siguiente contributions
matriz debajo de la targets
matriz del contenido básico del manifiesto.
Importante
Los parámetros de conexión de servicio deben capturarse mediante el identificador de conexión de servicio.
"contributions": [
{
"id": "service-endpoint",
"description": "Service endpoint type for Fabrikam connections",
"type": "ms.vss-endpoint.service-endpoint-type",
"targets": [ "ms.vss-endpoint.endpoint-types" ],
"properties": {
"name": "fabrikam",
"displayName": "Fabrikam server connection",
"url": {
"displayName": "Server Url",
"helpText": "Url for the Fabrikam server to connect to."
},
"dataSources": [
{
"name": "Fabrikam Projects",
"endpointUrl": "{{endpoint.url}}api/projects/index",
"resultSelector": "jsonpath:$[*].nm"
}
],
"authenticationSchemes": [
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-token"
},
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-basic",
"inputDescriptors": [
{
"id": "username",
"name": "Username",
"description": "Username",
"inputMode": "textbox",
"validation": {
"isRequired": false,
"dataType": "string"
}
},
{
"id": "password",
"name": "Password",
"description": "Password",
"inputMode": "passwordbox",
"isConfidential": true,
"validation": {
"isRequired": false,
"dataType": "string"
}
}
]
}
],
"helpMarkDown": "<a href=\"url-to-documentation\" target=\"_blank\"><b>Learn More</b></a>"
}
},
],
Si ha agregado correctamente la contribución del servicio, verá el punto de conexión de Fabrikam al intentar agregar un nuevo punto de conexión de servicio a su organización.
Cree un punto de conexión de servicio mediante el punto de conexión de Fabrikam.
Sugerencia
Puede agregar inputDescriptors sin authenticationSchemes. Para obtener más información, vea Interfaz InputDescriptor.
Adición de la contribución de la tarea de compilación
Dentro de la contributions
matriz del paso anterior, agregue el siguiente objeto al final.
{
"id": "build-task",
"description": "Task with a dynamic property getting data from an endpoint REST data source",
"type": "ms.vss-distributed-task.task",
"targets": [ "ms.vss-distributed-task.tasks" ],
"properties": {
"name": "BuildTaskFolder"
}
}
La dirección URL del punto de conexión dataSource se calcula a partir de la dirección URL del punto de conexión o una dirección URL fija y otros valores. En este tutorial, esta llamada REST no devuelve nada y está pensado para reemplazarse por las llamadas REST que quiera realizar en el servicio.
Es posible usar otros parámetros que la dirección URL del punto de conexión para la dirección URL de REST, por ejemplo, algunas propiedades del punto de conexión. Por ejemplo, suponiendo que teníamos una propiedad en el punto de conexión denominado subscriptionId, la dirección URL de REST podría usarla con la siguiente sintaxis: $(endpoint.subscription).
Creación de la tarea de compilación
El task.json
archivo describe la tarea de compilación.
Nota:
Para obtener más información, consulte los siguientes artículos:
- Referencia de tarea de compilación para buscar el esquema del archivo JSON de la tarea de compilación
- Adición de una extensión de tarea de canalizaciones personalizadas
- Integrar tarea de compilación
Cree un task.json
archivo en el BuildTaskFolder
directorio, si aún no ha creado esta carpeta, hágalo ahora.
{
"id": "6557a6d2-4caf-4247-99ea-5131286a8753",
"name": "build-task",
"friendlyName": "Build Task that uses the service endpoint",
"description": "Task with a dynamic property getting data from an endpoint REST data source",
"author": "francistotten",
"helpMarkDown": "Replace with Markdown to show in help",
"category": "Build",
"visibility": [
"Build",
"Release"
],
"demands": [],
"version": {
"Major": "0",
"Minor": "1",
"Patch": "1"
},
"minimumAgentVersion": "1.95.0",
"instanceNameFormat": "Service Endpoint Build Task $(project)",
"inputs": [
{
"name": "FabrikamService",
"type": "connectedService:Fabrikam",
"label": "Fabrikam service/server end point",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the Fabrikam end point to use. If needed, select 'manage', and add a new service endpoint of type 'Fabrikam server connection'"
},
{
"name": "project",
"type": "pickList",
"label": "Fabrikam Project",
"required": true,
"helpMarkDown": "Select the name of the Fabrikam Project to analyze.",
"properties": {
"EditableOptions": "True"
}
}
],
"dataSourceBindings": [
{
"target": "project",
"endpointId": "$(FabrikamService)",
"dataSourceName": "Fabrikam Projects"
}
],
"execution": {
"Node": {
"target": "sample.js",
"argumentFormat": ""
},
"PowerShell3": {
"target": "sample.ps1"
}
}
}
componentes de task.json
Objeto FabrikamService
de entrada
Este campo es el primero de tipo connectedService:Fabrikam.connectedService expresa que es un tipo de punto de conexión y que Fabrikam es el nombre del objeto.
Objeto project
de entrada
Este campo es el segundo. Es una lista de selección.
- Este campo se rellena mediante una llamada REST.
- Los valores del campo "project" se toman del origen de datos REST "Projects" del punto de conexión personalizado.
- Expresado en la
dataSourceBindings
matriz.- El destino es el nombre del campo de tarea de compilación que se va a rellenar ("project").
- EndpointId es el nombre del campo de tarea de compilación que contiene el tipo de punto de conexión personalizado.
- El dataSourceName elige la llamada REST.
Si ha agregado correctamente la tarea de compilación, ahora debería ver la tarea de compilación al agregar tareas a una canalización de compilación.
Una vez que haya agregado la tarea de compilación a la canalización, confirme que puede ver el punto de conexión de Fabrikam que creó. La lista desplegable de proyectos de este tutorial está en blanco, ya que no se usa un servicio real. Una vez que reemplace Fabrikam por el servicio, reemplace la llamada projects por su propia llamada a la API REST para usar datos dinámicos dentro de la tarea de compilación.
Autenticación
El esquema de autenticación de un punto de conexión de servicio determina las credenciales que se usarían para conectarse al servicio externo. Para obtener más información y ver los siguientes esquemas de autenticación, consulte la documentación sobre esquemas de autenticación.
- Autenticación básica
- Autenticación basada en tokens
- Autenticación basada en certificados
- Ninguna autenticación