0

Visual Studio Team Services (以前の Visual Studio Online) 用の PowerShell ベースのビルド タスクを作成しました。必要な機能の大部分を実装しましたが、機能の最後の部分については、ビルド間で少量のデータを保持できるようにする必要があります。

ExtensionDataServiceはまさに私が求めているもの (特に setValue メソッドと getValue メソッド) のようですが、私が見つけたドキュメントと例はnode.js ベースのビルド タスク用です。

    VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) {
    // Set a user-scoped preference
    dataService.setValue("pref1", 12345, {scopeType: "User"}).then(function(value) {
        console.log("User preference value is " + value);
    });

前のページにも REST API を呼び出す部分的な例がありますが、値を保存または取得するために使用しようとすると 404 エラーが発生しました。

GET _apis/ExtensionManagement/InstalledExtensions/{publisherName}/{extensionName}/Data/Scopes/User/Me/Collections/%24settings/Documents
{
    "id": "myKey",
    "__etag": -1,
    "value": "myValue"
}

ライブラリを使用するか、REST API を直接呼び出して、PowerShell を使用して ExtensionDataService にアクセスできますか?

4

1 に答える 1

1

PowerShell を介して REST API を呼び出すことができます。

設定値 ( Putリクエスト):

 https://[vsts name].extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions/{publisherName}/{extension id}/Data/Scopes/User/Me/Collections/%24settings/Documents?api-version=3.1-preview.1

本文 (Content-Type: application/json )

{
  "id": "myKey",
  "__etag": -1,
  "value": "myValue"
}

値を取得 (リクエストを取得):

https://[vsts name].extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions/{publisherName}/{extension id}/Data/Scopes/User/Me/Collections/%24settings/Documents/mykey?api-version=3.1-preview.1

パブリッシャー名と拡張機能 ID は、パッケージ json ファイル (vss-extension.json など) で取得できます。

PowerShell を介した REST API の呼び出しについては、次の記事を参照してください: PowerShell を使用した VSTS API の呼び出し

REST API を呼び出す簡単なサンプル:

Param(
   [string]$vstsAccount = "<VSTS-ACCOUNT-NAME>",
   [string]$projectName = "<PROJECT-NAME>",
   [string]$buildNumber = "<BUILD-NUMBER>",
   [string]$keepForever = "true",
   [string]$user = "",
   [string]$token = "<PERSONAL-ACCESS-TOKEN>"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uri = "https://$($vstsAccount).visualstudio.com/DefaultCollection/$($projectName)/_apis/build/builds?api-version=2.0&buildNumber=$($buildNumber)"

$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

ベース URL を取得する PowerShell スクリプト:

Function GetURL{
param([string]$url)
$regex=New-Object System.Text.RegularExpressions.Regex("https:\/\/(.*).visualstudio.com")
$match=$regex.Match($url)
 if($match.Success)
    {
        $vstsAccount=$match.Groups[1]
        $resultURL="https://$vstsAccount.extmgmt.visualstudio.com"
    }
}
GetURL "https://codetiger.visualstudio.com/"
于 2016-12-21T07:43:33.613 に答える