TFS REST API在分支上获得最新成功构建

TFS REST API在分支上获得最新成功构建,rest,tfs,Rest,Tfs,我正在尝试获取TFS定义的最新版本。 但是我得到了所有的sourceBranch值,我想在和TeamCity相同的查询中进行筛选。 这在TFS中是否可能 我使用的查询类似于: url/builds?statusFilter=completed&resultFilter=successed&definitions=10&api版本=2.0 根据提供的文档,无法在同一请求中找到简单的查询方法 以前有人做过吗?我认为它非常基本,但在TFS中很困难。默认情况下,RESTAPI没有分支过滤器 如果要查询特

我正在尝试获取TFS定义的最新版本。 但是我得到了所有的sourceBranch值,我想在和TeamCity相同的查询中进行筛选。 这在TFS中是否可能

我使用的查询类似于:

url/builds?statusFilter=completed&resultFilter=successed&definitions=10&api版本=2.0

根据提供的文档,无法在同一请求中找到简单的查询方法


以前有人做过吗?我认为它非常基本,但在TFS中很困难。

默认情况下,RESTAPI没有分支过滤器

如果要查询特定分支上的生成,请直接使用REST API,您可以使用其他筛选器,例如
tagFilters
,这意味着您可以为在特定分支上排队的生成创建标记

另一个解决方法是使用第三个工具(如PowerShell)过滤分支

您可以使用下面的PowerShell脚本筛选特定分支上的生成(第一个生成应该是最新的生成):


自Andy Li MSFT提供以来,官方API已发生变化

当前API支持按分支名称过滤-
branchName

例如:

$buildsApi = "https://dev.azure.com/{organization}/{project}/_apis/build/builds"
$definitionId = 100
$urlWithFilters = "$buildsApi?api-version=6.0&statusFilter=completed&resultFilter=succeeded&branchName=refs/heads/main&definitions=$definitionId"  
$builds = (Invoke-RestMethod -Uri $urlWithFilters -Method Get -UseDefaultCredential).value

请参见

谢谢,最后我使用了与您建议使用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
$buildsApi = "https://dev.azure.com/{organization}/{project}/_apis/build/builds"
$definitionId = 100
$urlWithFilters = "$buildsApi?api-version=6.0&statusFilter=completed&resultFilter=succeeded&branchName=refs/heads/main&definitions=$definitionId"  
$builds = (Invoke-RestMethod -Uri $urlWithFilters -Method Get -UseDefaultCredential).value