Создание конечной точки службы

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Конечные точки службы — это способ подключения Azure DevOps к внешним системам или службам. Они — это пакет свойств, безопасно хранящихся в Azure DevOps, который включает в себя, но не ограничивается следующими свойствами:

  • Service name
  • Description
  • URL-адрес сервера
  • Сертификаты или маркеры
  • Имена пользователей и пароли

Затем расширения могут использовать конечную точку службы для получения сохраненных сведений для выполнения необходимых операций в этой службе. Следуйте этому руководству, чтобы создать вклад конечной точки службы и использовать его в расширении.

Совет

Ознакомьтесь с нашей новой документацией по разработке расширений с помощью пакета SDK для расширений Azure DevOps.

Обзор задачи

Вы можете разработать конечную точку службы, создав пример расширения для Azure DevOps, который включает следующие элементы:

  • Пользовательская конечная точка службы с источниками данных, которая позволяет задаче сборки или мини-приложению панели мониторинга вызывать конечную точку REST на сервере или службе, определенной конечной точкой.
  • Задача сборки, которая определяет два свойства: конечная точка службы и список выбора, который содержит значения, заполненные из источника данных конечной точки REST.

Примечание.

При создании конечных точек службы он находится на уровне проекта, а не на уровне организации.

Ниже приведены действия, связанные с выполнением этой задачи.

Примечание.

Это руководство относится к домашнему каталогу для проекта как "home".

Создайте файл манифеста: vss-extension.json

Файл манифеста определяет пользовательскую конечную точку и связывается с манифестом task.json для задачи сборки.

В этой статье создание файла манифеста разделено на следующие три части:

Создание базового файла манифеста

Создайте json-файл (vss-extension.jsonнапример, в home каталоге расширения).

{
"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"
    }
  ]
}

Примечание.

publisher Обновите свойство. Это BuildTaskFolder путь, в котором мы в конечном итоге поместим конвейер задач сборки.

Добавление вклада пользовательской конечной точки

Добавьте следующий contributions массив под targets массивом базового содержимого манифеста.

Внимание

Параметры подключения службы должны быть возвращены идентификатором подключения службы.

  "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>"
      }
    },
  ],

Если вы успешно добавили вклад в службу, вы увидите конечную точку Fabrikam при попытке добавить новую конечную точку службы в вашу организацию.

Создайте конечную точку службы с помощью конечной точки Fabrikam.

Снимок экрана: настройка конечной точки службы.

Совет

Можно добавить входныеdescriptors без проверки подлинностиSchemes. Дополнительные сведения см. в разделе "Интерфейс InputDescriptor".

Добавление вклада задачи сборки

contributions В массиве из предыдущего шага добавьте следующий объект в конец.

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

URL-адрес конечной точки источника данных вычисляется из URL-адреса конечной точки или фиксированного URL-адреса, а также некоторых других значений. В этом руководстве этот вызов REST не возвращает ничего и предназначен для замены любыми вызовами REST, которые вы хотите сделать в службе.

Можно использовать другие параметры, отличные от URL-адреса конечной точки для URL-адреса REST, например некоторые свойства конечной точки. Например, предположим, что у нас есть свойство в конечной точке с именем subscriptionId, URL-адрес REST может использовать его со следующим синтаксисом: $(endpoint.subscription).

Создание задачи сборки

Файл task.json описывает задачу сборки.

Создайте файл в BuildTaskFolder каталогеtask.json, если вы еще не создали эту папку, сделайте это сейчас.

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

компоненты task.json

Входной FabrikamService объект

Это поле является первым типом connectedService:Fabrikam.connectedService, который указывает, что это тип конечной точки, и что Fabrikam является именем объекта.

Входной project объект

Это поле является вторым. Это список выбора.

  • Это поле заполняется вызовом REST.
  • Значения из поля "проект" взяты из источника данных REST "Проекты" настраиваемой конечной точки.
  • Выражено в массиве dataSourceBindings .
    • Целевой объект — это имя поля задачи сборки, заполняемого ("проект").
    • EndpointId — это имя поля задачи сборки, содержащего пользовательский тип конечной точки.
    • Вызов REST выбирается именем dataSourceName.

Если вы успешно добавили задачу сборки, вы увидите задачу сборки при добавлении задач в конвейер сборки.

Образ селектора задачи сборки конечной точки службы.

После добавления задачи сборки в конвейер убедитесь, что она может увидеть созданную конечную точку Fabrikam. Раскрывающийся список проектов в этом руководстве пуст, так как мы не используем реальную службу. После замены Fabrikam службой замените вызов Projects собственным вызовом REST API для использования динамических данных в задаче сборки.

Образ настройки задачи сборки конечной точки службы.

Проверка подлинности

Схема проверки подлинности в конечной точке службы определяет учетные данные, которые будут использоваться для подключения к внешней службе. Дополнительные сведения и сведения о следующих схемах проверки подлинности см. в документации по схемам проверки подлинности.

  • Обычная проверка подлинности
  • Проверка подлинности на основе токенов
  • Проверка подлинности на основе сертификатов
  • Без проверки подлинности

Следующие шаги