サービス エンドポイントを作成する
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
サービス エンドポイントは、Azure DevOps が外部のシステムまたはサービスに接続するための手段です。 これらは、Azure DevOps によって安全に格納されるプロパティのバンドルです。これには、次のプロパティが含まれますが、これらに限定されません。
- サービス名
- 説明
- サーバー URL
- 証明書またはトークン
- ユーザー名とパスワード
拡張機能は、サービス エンドポイントを使用して保存された詳細を取得し、そのサービスに対して必要な操作を行うことができます。 このガイドに従って、新しいサービス エンドポイントのコントリビューションを作成し、拡張機能で使用します。
ヒント
Azure DevOps 拡張機能 SDK を使用した拡張機能開発に関する最新のドキュメントを確認してください。
タスクの概要
サービス エンドポイントを開発するには、次の項目を含む Azure DevOps の拡張機能の例を作成します。
- データ ソースを含むカスタム サービス エンドポイント。これにより、ビルド タスクまたはダッシュボード ウィジェットは、エンドポイントによって定義されたサービス/サーバー上の REST エンドポイントを呼び出します。
- 2 つのプロパティを定義するビルド タスク:サービス エンドポイントと選択リスト。REST エンドポイント データ ソースから値が設定されます。
Note
サービス エンドポイントを作成すると、組織レベルではなくプロジェクト レベルになります。
このタスクを完了する手順は次のとおりです。
Note
このチュートリアルでは、プロジェクトのホーム ディレクトリを "home" と参照します。
マニフェスト ファイルを作成します。 vss-extension.json
マニフェスト ファイルは、カスタム エンドポイントを定義し、ビルド タスクのtask.json マニフェストへのリンクを定義します。
この記事では、マニフェスト ファイルの作成を次の 3 つの部分に分けます。
基本的なマニフェスト ファイルを作成する
拡張機能のディレクトリに 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"
}
]
}
Note
publisher
プロパティを更新します。 これは BuildTaskFolder
、最終的にビルド タスク パイプラインを配置するパスです。
カスタム エンドポイントコントリビューションを追加する
基本的なマニフェスト コンテンツの配列の下にtargets
次contributions
の配列を追加します。
重要
サービス接続パラメーターは、サービス接続 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>"
}
},
],
サービスの投稿を正常に追加した場合は、組織に新しいサービス エンドポイントを追加しようとしたときに Fabrikam エンドポイントが表示されます。
Fabrikam エンドポイントを使用してサービス エンドポイントを作成します。
ヒント
authenticationSchemes を使用せずに inputDescriptor を追加できます。 詳細については、「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
、ビルド タスクが記述されています。
Note
詳細については、次の記事をチェックしてください。
このフォルダーを 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
入力オブジェクト
このフィールドは 2 番目です。 これは候補リストです。
- このフィールドは、REST 呼び出しによって設定されます。
- フィールド "project" の値は、カスタム エンドポイントの "Projects" REST データ ソースから取得されます。
- 配列で
dataSourceBindings
表されます。- ターゲットは、設定するビルド タスク フィールドの名前です ("project")。
- endpointId は、カスタム エンドポイントの種類を含むビルド タスク フィールドの名前です。
- REST 呼び出しは dataSourceName によって選択されます。
ビルド タスクを正常に追加した場合は、ビルド パイプラインにタスクを追加するときにビルド タスクが表示されます。
ビルド タスクをパイプラインに追加したら、作成した Fabrikam エンドポイントが表示されることを確認します。 実際のサービスを使用していないため、このチュートリアルのプロジェクト ドロップダウンは空白です。 Fabrikam をサービスに置き換えたら、Projects 呼び出しを独自の REST API 呼び出しに置き換えて、ビルド タスク内で動的データを使用します。
認証
サービス エンドポイントの認証スキームによって、外部サービスへの接続に使用される資格情報が決まります。 詳細および次の認証スキームについては、認証スキームのドキュメントを 参照してください。
- 基本認証
- トークンベースの認証
- 証明書ベースの認証
- 認証なし