建立服務端點
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
服務端點是一種 Azure DevOps 連線到外部系統或服務的方式。 它們是 Azure DevOps 安全地儲存的屬性組合,其中包含但不限於下列屬性:
- 服務名稱
- 描述
- 伺服器 URL
- 憑證或權杖
- 使用者名稱與密碼
擴充功能接著可以使用服務端點來取得儲存的詳細數據,以對該服務執行必要的作業。 請遵循本指南來建立新的服務端點貢獻,並在您的延伸模組中使用。
提示
請參閱使用 Azure DevOps 擴充功能 SDK 進行擴充功能開發的最新檔。
工作概觀
您可以建立 Azure DevOps 的範例延伸模組來開發服務端點,其中包含下列專案:
- 具有數據源的自定義服務端點,可讓建置工作或儀錶板小工具在端點所定義的服務/伺服器上呼叫 REST 端點。
- 建置工作,定義兩個屬性:服務端點和挑選清單,其中包含從 REST 端點數據源填入的值。
注意
當您建立服務端點時,其位於專案層級,而不是組織層級。
完成這項工作所涉及的步驟如下:
注意
本教學課程將專案的主目錄稱為「首頁」。
建立指令清單檔案: 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
是最終放置建置工作管線的路徑。
新增自定義端點貢獻
在基本指令清單內容的陣列底下targets
新增下列contributions
數位列數位。
重要
服務連線參數必須由服務連線標識符擷取。
"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 端點建立服務端點。
提示
您可以新增 inputDescriptors 而不使用 authenticationSchemes。 如需詳細資訊,請參閱 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"
}
}
dataSource 端點 URL 會從端點的 URL 或固定 URL,以及其他一些值進行計算。 在本教學課程中,此 REST 呼叫不會傳回任何內容,而且應該由您想要對服務進行的任何 REST 呼叫取代。
您可以使用 REST URL 的端點 URL 以外的其他參數,例如某些端點屬性。 例如,假設我們在名為 subscriptionId 的端點中有屬性,REST URL 可以搭配下列語法使用:$(endpoint.subscription)。
建立建置工作
檔案 task.json
描述您的建置工作。
task.json
如果您尚未建立此資料夾,請在目錄中BuildTaskFolder
建立檔案,現在請執行此動作。
{
"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元件
FabrikamService
輸入物件
此欄位是 connectedService:Fabrikam.connectedService 類型的第一個,表示它是端點類型,而 Fabrikam 是對象的名稱。
project
輸入物件
此欄位為第二個。 這是一個選擇清單。
- 此欄位會由 REST 呼叫填入。
- “project” 字段的值取自自定義端點的 “Projects” REST 數據源。
- 以
dataSourceBindings
陣列表示。- 目標是要填入的建置工作字段名稱 (“project” )。
- endpointId 是包含自定義端點類型的建置工作欄位名稱。
- DATASourceName 會選擇 REST 呼叫。
如果您已成功新增建置工作,則現在應該會在您將工作新增至建置管線時看到建置工作。
將建置工作新增至管線之後,請確認它可以看到您所建立的 Fabrikam 端點。 本教學課程中的專案下拉式清單是空白的,因為我們未使用實際服務。 將 Fabrikam 取代為服務之後,請將 Projects 呼叫取代為您自己的 REST API 呼叫,以在建置工作中使用動態數據。
驗證
服務端點中的驗證配置會決定用來連線到外部服務的認證。 如需詳細資訊,以及若要查看下列驗證配置,請參閱 驗證配置檔。
- 基本驗證
- 權杖型驗證
- 憑證型驗證
- 無驗證