3

TFS Rest APIを使用してPowerShellから新しいビルドをキューに入れようとしています。新しいビルドをキューに入れることはできますが、requestedBy プロパティを設定したいと思います。ドキュメントでは、追加のパラメーターを渡すことができると読むことができます。これらのパラメーターが何であるかについて、これ以上のドキュメントは見つかりません。これができるかどうか誰にもわかりますか?

(XAML ビルドをキューに入れる) を使用すると、次のtfsbuild.exeような追加の引数を渡すことができます。

&$tfsBuild.Exe start "url" project definition /requestedFor:"$buildRequestedFor" /queue

編集

私はこれを機能させることができました。リクエストの本文は次のようになります。

$json = "{
        ""definition"": {
            ""id"" : 174
        }
        ,""requestedFor"": {
            ""id"": ""6f4d7323-fa51-4cda-9eb4-7342b02ba087""
        }
      }" `

id プロパティのみを使用できます。たとえば、uniqueName を使用すると失敗します。

完全なPowerShellコードは次のとおりです。

$user = ""
$pass= ""

$uri = "http://Instance/DefaultCollection/Project/_apis/build/builds?api-version=2.0"

$json = "{
        ""definition"": {
            ""id"" : 174
        }
        ,""requestedFor"": {
            ""id"": ""6f4d7323-fa51-4cda-9eb4-7342b02ba087""
        }
      }" 

$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)

Invoke-RestMethod -Uri $uri -Method Post -Credential $cred -ContentType "application/json" -Body $json
4

2 に答える 2

3

Invoke-RestMethodPowerShell を使用して、コマンドレットでビルドをキューに入れることができるはずです。このリンクが役立つ場合があります。問題は、REST API がまだ完全に文書化されていないように見えるため、Fiddler などのツールを使用しないと見つからないプロパティがいくつかあることです。体をこんな感じに変えられるかもしれませんが、まだ試していません。

$body = @"
        { 
            "definition": {
                "id": $Build_Definition_ID
            },
            "sourceVersion": {
                "requestedBy": {name here}
            }
        }
    "@

変更できるはずの例を次に示します(いくつかの変数の宣言が欠落していますが、これで始めることができます):

$body = @"
    { 
        "definition": {
            "id": $Build_Definition_ID
        } 
    }
"@

$baseUri = $TFSInstanceURL+"/"+$ProjectCollection+"/"+$TeamProject+"/_apis/build"

$postUri = $baseUri+"/builds?api-version=2.0"

Write-Host $postUri

##Create a new PSCredential based on username/password

$securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($User, $securePassword)

### Queue a build ###

##Call the REST API for TFS that does a POST request to queue a build with the body of the request to be the build definition

$buildResponse = Invoke-RestMethod -Method Post -Credential $credential -ContentType application/json -Uri $postUri -Body $body

Write-Host (ConvertTo-Json $buildResponse)

その他の例については、このリンクを参照してください。

于 2016-07-11T19:59:47.320 に答える