2016-07-11 13 views
2

TFS Rest APIを使用して、PowerShellから新しいビルドをキューに入れようとしています。新しいビルドをキューに入れることができましたが、requestedByプロパティを設定したいと思います。 docsでは、追加のパラメータを渡すことができます。私は、これらのパラメータが何であるかについてのさらなる文書を見つけることができません。これができるかどうか誰にも分かりますか? (XAMLビルドキューに)tfsbuild.exeを使用しTFSビルドvNext残りのAPI:キュービルドのリクエスト

あなたは、このような追加の引数渡すことができます。私はこの作業を取得することができました

&$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 
+0

関連(vNext):http://stackoverflow.com/questions/32326058/tfsbuild-command-line-vnext-2015 – CJBS

+0

ここではPowerShellソリューションと思われます:http://stackoverflow.com/questions/32496022/start-vnext-powershell-and-get-artifacts – CJBS

+0

これら2つのリンクがなぜ役立つのか分かりません。私は新しいビルドを起動できますが、それは問題ではありません。私はrequestedByプロパティを設定できません。 –

答えて

0

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

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

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

1

あなたはInvoke-RestMethodコマンドレットを使用してビルドをキューにPowerShellを使用することができるはずですが。このlinkが役に立ちます。課題は、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) 

は、より多くの例については、このlinkを参照してください。

関連する問題