Skapa en tjänstslutpunkt

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Tjänstslutpunkter är ett sätt för Azure DevOps att ansluta till externa system eller tjänster. De är ett paket med egenskaper som lagras på ett säkert sätt av Azure DevOps, vilket inkluderar men inte är begränsat till följande egenskaper:

  • Servicenamn
  • beskrivning
  • Server-URL
  • Certifikat eller token
  • Användarnamn och lösenord

Tillägg kan sedan använda tjänstslutpunkten för att hämta lagrad information för att utföra nödvändiga åtgärder på den tjänsten. Följ den här guiden om du vill skapa ett nytt tjänstslutpunktsbidrag och använda det i tillägget.

Dricks

Läs vår senaste dokumentation om tilläggsutveckling med hjälp av Azure DevOps Extension SDK.

Aktivitetsöversikt

Du kan utveckla en tjänstslutpunkt genom att skapa ett exempeltillägg för Azure DevOps som innehåller följande objekt:

  • En anpassad tjänstslutpunkt med datakällor som gör det möjligt för en bygguppgift eller instrumentpanelswidget att anropa en REST-slutpunkt på den tjänst/server som definierats av slutpunkten.
  • En bygguppgift som definierar två egenskaper: Tjänstslutpunkten och en listruta, som har värden ifyllda från REST-slutpunktsdatakällan.

Kommentar

När du skapar en tjänstslutpunkter är den på projektnivå, inte på organisationsnivå.

Stegen som ingår i slutförandet av den här uppgiften är:

Kommentar

Den här självstudien refererar till startkatalogen för projektet som "home".

Skapa manifestfilen: vss-extension.json

Manifestfilen definierar den anpassade slutpunkten och länkar till task.json-manifestet för byggaktiviteten.

I den här artikeln delas manifestfilens skapande upp i följande tre delar:

Skapa en grundläggande manifestfil

Skapa en json-fil (vss-extension.jsontill exempel) i home katalogen för tillägget.

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

Kommentar

Uppdatera egenskapen publisher . BuildTaskFolder Är den sökväg där vi så småningom placerar vår bygguppgiftspipeline.

Lägg till det anpassade slutpunktsbidraget

Lägg till följande contributions matris under matrisen targets för det grundläggande manifestinnehållet.

Viktigt!

Tjänstanslutningsparametrar måste hämtas med tjänstanslutnings-ID.

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

Om du har lagt till tjänstbidraget visas Fabrikam-slutpunkten när du försöker lägga till en ny tjänstslutpunkt i organisationen.

Skapa en tjänstslutpunkt med fabrikam-slutpunkten.

Skärmbild av tjänstslutpunktsuppsättning.

Dricks

Du kan lägga till inputDescriptors utan autentiseringSchemes. Mer information finns i InputDescriptor-gränssnittet.

Lägg till bidrag för byggaktiviteten

I matrisen contributions från föregående steg lägger du till följande objekt i slutet.

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

DataSource-slutpunkts-URL:en beräknas från URL:en för slutpunkten eller en fast URL och några andra värden. I den här självstudien returnerar det här REST-anropet ingenting och är avsett att ersättas av eventuella REST-anrop som du vill göra till din tjänst.

Det går att använda andra parametrar än slutpunkts-URL:en för REST-URL:en, till exempel vissa slutpunktsegenskaper. Om vi till exempel har en egenskap i slutpunkten med namnet subscriptionId kan REST-URL:en använda den med följande syntax: $(endpoint.subscription).

Skapa versionsuppgiften

Filen task.json beskriver din bygguppgift.

Kommentar

Mer information finns i följande artiklar:

Skapa en task.json fil i katalogen BuildTaskFolder , om du inte har skapat den här mappen ännu, gör det nu.

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

Indataobjektet FabrikamService

Det här fältet är det första av typen connectedService:Fabrikam.connectedService som uttrycker att det är en slutpunktstyp och att Fabrikam är namnet på objektet.

Indataobjektet project

Det här fältet är tvåa. Det är en listruta.

  • Det här fältet fylls i av ett REST-anrop.
  • Värdena från fältet "project" hämtas från REST-datakällan "Projects" för den anpassade slutpunkten.
  • Uttryckt i matrisen dataSourceBindings .
    • Målet är namnet på det byggaktivitetsfält som ska fyllas i ("projekt").
    • EndpointId är namnet på det byggaktivitetsfält som innehåller den anpassade slutpunktstypen.
    • REST-anropet väljs av dataSourceName.

Om du har lagt till byggaktiviteten bör du nu se byggaktiviteten när du lägger till uppgifter i en bygg-pipeline.

Avbildning av uppgiftsväljaren för tjänstslutpunktsbygge.

När du har lagt till bygguppgiften i pipelinen bekräftar du att den kan se den Fabrikam-slutpunkt som du skapade. Listrutan projekt i den här självstudien är tom eftersom vi inte använder en riktig tjänst. När du har ersatt Fabrikam med din tjänst ersätter du projektanropet med ditt eget REST API-anrop för att använda dynamiska data i byggaktiviteten.

Konfigurationsbild för tjänstslutpunktsgenerering.

Autentisering

Autentiseringsschemat i en tjänstslutpunkt avgör vilka autentiseringsuppgifter som ska användas för att ansluta till den externa tjänsten. Mer information och om du vill se följande autentiseringsscheman finns i dokumentationen för autentiseringsscheman.

  • Grundläggande autentisering
  • Tokenbaserad autentisering
  • Certifikatbaserad autentisering
  • Ingen autentisering

Nästa steg