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:

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 archivo de manifiesto básico

Cree un archivo JSON (vss-extension.jsonpor 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.

Captura de pantalla de la configuración del punto de conexión de servicio.

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:

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,selecton '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.

Imagen del selector de tareas de compilación del punto de conexión de servicio.

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.

Imagen de configuración de la tarea de compilación del punto de conexión de servicio.

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

Pasos siguientes