Udostępnij za pośrednictwem


Tworzenie punktu końcowego usługi

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

Punkty końcowe usługi to sposób, aby usługa Azure DevOps łączyła się z zewnętrznymi systemami lub usługami. Są one pakietem właściwości bezpiecznie przechowywanych przez usługę Azure DevOps, która obejmuje, ale nie jest ograniczona do następujących właściwości:

  • Service name
  • opis
  • Adres URL serwera
  • Certyfikaty lub tokeny
  • Nazwy użytkowników i hasła

Rozszerzenia mogą następnie używać punktu końcowego usługi do uzyskiwania przechowywanych szczegółów w celu wykonania niezbędnych operacji na tej usłudze. Postępuj zgodnie z tym przewodnikiem, aby utworzyć nowy wkład punktu końcowego usługi i użyć go w rozszerzeniu.

Napiwek

Zapoznaj się z naszą najnowszą dokumentacją dotyczącą programowania rozszerzeń przy użyciu zestawu SDK rozszerzenia usługi Azure DevOps.

Omówienie zadania

Punkt końcowy usługi można utworzyć, tworząc przykładowe rozszerzenie dla usługi Azure DevOps, które zawiera następujące elementy:

  • Niestandardowy punkt końcowy usługi ze źródłami danych, który umożliwia zadanie kompilacji lub widżet pulpitu nawigacyjnego w celu wywołania punktu końcowego REST na usłudze/serwerze zdefiniowanym przez punkt końcowy.
  • Zadanie kompilacji, które definiuje dwie właściwości: punkt końcowy usługi i listę wyboru, która zawiera wartości wypełnione ze źródła danych punktu końcowego REST.

Uwaga

Podczas tworzenia punktów końcowych usługi jest on na poziomie projektu, a nie na poziomie organizacji.

Kroki związane z wykonaniem tego zadania to:

Uwaga

Ten samouczek odnosi się do katalogu macierzystego projektu jako "strona główna".

Utwórz plik manifestu: vss-extension.json

Plik manifestu definiuje niestandardowy punkt końcowy i łączy się z manifestem task.json dla zadania kompilacji.

W tym artykule tworzenie pliku manifestu jest oddzielone od następujących trzech części:

Tworzenie podstawowego pliku manifestu

Utwórz plik JSON (vss-extension.jsonna przykład) w home katalogu rozszerzenia.

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

Uwaga

publisher Zaktualizuj właściwość . Jest BuildTaskFolder to ścieżka, w której w końcu umieścimy potok zadania kompilacji.

Dodawanie udziału niestandardowego punktu końcowego

Dodaj następującą contributions tablicę targets poniżej tablicy podstawowej zawartości manifestu.

Ważne

Parametry połączenia z usługą muszą być pobierane przez identyfikator połączenia usługi.

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

Jeśli pomyślnie dodano współtworzenie usługi, podczas próby dodania nowego punktu końcowego usługi do organizacji zobaczysz punkt końcowy usługi Fabrikam.

Utwórz punkt końcowy usługi przy użyciu punktu końcowego firmy Fabrikam.

Zrzut ekranu przedstawiający konfigurowanie punktu końcowego usługi.

Napiwek

Można dodawać klasy inputDescriptor bez uwierzytelnianiaSchemes. Aby uzyskać więcej informacji, zobacz InputDescriptor interface (Interfejs InputDescriptor).

Dodawanie współtworzenia zadania kompilacji

Wewnątrz tablicy contributions z poprzedniego kroku dodaj następujący obiekt na końcu.

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

Adres URL punktu końcowego źródła danych jest obliczany z adresu URL punktu końcowego lub stałego adresu URL oraz z innych wartości. W tym samouczku to wywołanie REST nie zwraca niczego i ma zostać zastąpione przez wszystkie wywołania REST, które chcesz wykonać w usłudze.

Można użyć innych parametrów niż adres URL punktu końcowego dla adresu URL REST, na przykład niektórych właściwości punktu końcowego. Załóżmy na przykład, że we właściwości w punkcie końcowym o nazwie subscriptionId adres URL REST może użyć go z następującą składnią: $(endpoint.subscription).

Tworzenie zadania kompilacji

Plik task.json opisuje zadanie kompilacji.

Uwaga

Aby uzyskać więcej informacji, zapoznaj się z następującymi artykułami:

task.json Utwórz plik w BuildTaskFolder katalogu, jeśli ten folder nie został jeszcze utworzony, zrób to teraz.

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

składniki task.json

FabrikamService Obiekt wejściowy

To pole jest pierwszym typem connectedService:Fabrikam.connectedService wyraża, że jest to typ punktu końcowego, a Fabrikam jest nazwą obiektu.

project Obiekt wejściowy

To pole jest drugie. Jest to lista wyboru.

  • To pole jest wypełniane przez wywołanie REST.
  • Wartości z pola "project" są pobierane ze źródła danych REST "Projects" niestandardowego punktu końcowego.
  • Wyrażona w tablicy dataSourceBindings .
    • Element docelowy to nazwa pola zadania kompilacji, które ma zostać wypełnione ("projekt").
    • EndpointId to nazwa pola zadania kompilacji zawierającego niestandardowy typ punktu końcowego.
    • Wywołanie REST jest wybierane przez element dataSourceName.

Jeśli zadanie kompilacji zostało dodane pomyślnie, po dodaniu zadań kompilacji do potoku kompilacji powinno zostać wyświetlone zadanie kompilacji.

Obraz selektora zadań kompilacji punktu końcowego usługi.

Po dodaniu zadania kompilacji do potoku upewnij się, że będzie on widoczny dla utworzonego punktu końcowego firmy Fabrikam. Lista rozwijana projektów w tym samouczku jest pusta, ponieważ nie używamy rzeczywistej usługi. Po zastąpieniu usługi Fabrikam zastąp wywołanie projects własnym wywołaniem interfejsu API REST, aby używać danych dynamicznych wewnątrz zadania kompilacji.

Obraz konfiguracji zadania kompilacji punktu końcowego usługi.

Uwierzytelnianie

Schemat uwierzytelniania w punkcie końcowym usługi określa poświadczenia, które będą używane do łączenia się z usługą zewnętrzną. Aby uzyskać więcej informacji i zapoznać się z następującymi schematami uwierzytelniania, zobacz dokumentację schematów uwierzytelniania.

  • Uwierzytelnianie podstawowe
  • Uwierzytelnianie oparte na tokenach
  • Uwierzytelnianie oparte na certyfikatach
  • Bez uwierzytelniania

Następne kroki