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.json
till 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.
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 uppgiftsreferens för att hitta schemat för json-filen för byggaktiviteten
- Lägga till ett tillägg för anpassade pipelines-aktiviteter
- Integrera bygguppgift
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, 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"
}
}
}
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.
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.
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