如何在get builds列表中应用过滤器VSTS REST API?

时间:2018-06-15 08:51:58

标签: powershell azure-devops azure-devops-rest-api

我正在尝试使用此处编写的power shell从VSTS获取构建列表https://docs.microsoft.com/en-us/rest/api/vsts/build/builds/list?view=vsts-rest-4.1 我的uri是:

https://tfs.*****.com/STS/FORIS_Mobile/_apis/build/builds?api-version=4.1&definitions=6331&statusFilter=completed&resultFilter=succeeded&tagFilters='Rejected'&maxBuildsPerDefinition=1&queryOrder=finishTimeDescending

我发送了这样的请求:

$buildsOverview = Invoke-WebRequest -UseDefaultCredentials -Uri $buildsUrl | ConvertFrom-Json 

我的结果没有过滤器definitions=6331tagFilters='Rejected'

我对这个请求做错了什么?

UPD 这是$ buildsUrl构建的方式:

$buildsUrlBase = "$tfsConnectString/$teamProjectName/_apis/build/builds?api-version=4.1"
$buildsUrlBase = "$buildsUrlBase&definitions=" +  $definitionIds.ToString() + "&statusFilter=completed&resultFilter=succeeded&maxBuildsPerDefinition=$BuildsPerDef&queryOrder=finishTimeDescending"    

if ([string]::IsNullOrEmpty($buildQuality) -ne $true) 
{
    $buildsUrlBase = "$buildsUrlBase&tagFilters='$buildQuality'"
}
$buildsUrlBase = [System.Uri]::EscapeUriString($buildsUrlBase)

我的构建定义ID的实际字符串就在问题中。

我也尝试过使用Invoke-RestMethod:

$buildsOverview = Invoke-RestMethod -Uri $buildsUrl -Method Get -ContentType "application/json-patch+json" -UseDefaultCredential

但结果相同

1 个答案:

答案 0 :(得分:0)

根据您的评论,解决方案如下:

  • 使用2.0版本的API
  • 请勿在标记周围使用引号

网址:https://tfs.*****.com/STS/FORIS_Mobile/_apis/build/builds?api-version=2.0&statusFilter=completed&tagFilters=Rejected&definitions=6331&resultFilter=succeeded&maxBuildsPerDefinition=1&queryOrder=finishTimeDescending

生成它的代码:

$buildsUrlBase = "$tfsConnectString/$teamProjectName/_apis/build/builds?api-version=2.0"
$buildsUrlBase = "$buildsUrlBase&definitions=" +  $definitionIds.ToString() + "&statusFilter=completed&resultFilter=succeeded&maxBuildsPerDefinition=$BuildsPerDef&queryOrder=finishTimeDescending"    

if ([string]::IsNullOrEmpty($buildQuality) -ne $true) 
{
    $buildsUrlBase = "$buildsUrlBase&tagFilters=$buildQuality"
}
$buildsUrlBase = [System.Uri]::EscapeUriString($buildsUrlBase)