2017-09-07 52 views
0

我試圖獲取TFS定義的最新版本。 但我得到了所有的sourceBranch值,並且想在TeamCity上進行相同的查詢過濾。 這可能在TFS中嗎?TFS REST API獲取最新成功構建在分支上

我使用的查詢是類似於:

網址/構建statusFilter =完成& resultFilter =成功&定義= 10 & API版本= 2.0

根據文檔提供https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#get-a-build找不到?一個簡單的方法來查詢相同的請求。

以前有人做過嗎?我認爲這是非常基本的,但在TFS中很困難。

回答

1

默認情況下,REST API的Branch過濾器不存在Get a list of builds

GET https://{instance}/DefaultCollection/{project}/_apis/build/builds?api-version={version}[&definitions={string}][&queues={string}][&buildNumber={string}][&type={string}][&minFinishTime={DateTime}][&maxFinishTime={DateTime}][&requestedFor={string}][&reasonFilter={string}][&statusFilter={string}][&tagFilters={string}][&propertyFilters={string}][&$top={int}][&continuationToken={string}] 

如果你要查詢的構建是某一分支使用REST API 直接,您可以使用其他的過濾器,例如tagFilters,這意味着你可以創建標籤爲建立其排隊具體的分支。

另一個解決方法是使用第三個工具(例如PowerShell)過濾分支。

您可以使用下面的PowerShell腳本篩選出建立在特定的分支(第一內建應該是最新的一個):

$baseUrl = "http://server:8080/tfs/CollectionLC/0418Scrum/_apis/build/builds?api-version=2.0&statusFilter=completed&resultFilter=succeeded&definitions=57" # Filter added.   
$builds = (Invoke-RestMethod -Uri $baseUrl -Method Get -UseDefaultCredential).value|where({$_.sourceBranch -eq '$/0418Scrum/web0418'}) # filter branch, just change '$/0418Scrum/web0418' to your branch. 

$BuildResults = @() 

foreach($build in $builds){ 

    $customObject = new-object PSObject -property @{ 
      "BuildDefinition" = $build.definition.name 
      "BuildId" = $build.id 
      "BuildNumber" = $build.buildNumber 
      "status" = $build.status 
      "result" = $build.result 
      "finishTime" = $build.finishTime 
      "sourceBranch" = $build.sourceBranch 
     } 

    $BuildResults += $customObject  
} 

$BuildResults | Select ` 
       BuildDefinition, 
       BuildId, 
       BuildNumber, 
       status, 
       result, 
       finishTime, 
       sourceBranch 

enter image description here

+0

謝謝,最後我用的方法很類似於你建議使用Powershell的那個。 –