VSTS构建RestAPI从上次成功或部分成功构建中检索变更集

时间:2016-03-30 10:52:55

标签: visual-studio powershell tfsbuild azure-devops

我在PowerShell脚本中使用RESTAPI来检索自上次成功构建以来的所有变更集,该变更集在vNext VSTS构建步骤中调用。

$TfsUrl = 'https://' + $Account + '.visualstudio.com/defaultcollection/' + $ProjectName

$CurrentBuildUrl = $TfsUrl + "/_apis/build/builds?api-version=2.0"+ "&definitions=" + $BuildDefinitionID + "&`$top=1"

$CurrentBuildDef = Invoke-RestMethod -Uri $CurrentBuildUrl -Headers $Headers -Method Get

$BuildId = $CurrentBuildDef.value.id

$BaseUrl =  "https://" + $Account + ".visualstudio.com/defaultcollection/_apis/tfvc/changesets"
$ChangeSetHistoryUrl = $TfsUrl + "/_apis/build/builds/$BuildId/changes?api-version=2.0"
$ChangeSetsHistoryDef = (Invoke-RestMethod -Uri $ChangeSetHistoryUrl -Headers $Headers -Method Get).value

然后我遍历更改集并将详细信息写入文件。

当我成功构建时,这可以正常工作 当我有一个部分成功的构建,即某些约束测试失败时,它不起作用。

它包括成功构建的所有变更集,而不是自最新的部分成功构建以来。

我想检索自上次成功或部分成功构建以来的所有变更集,以最后一个为准。

这可能吗?

2 个答案:

答案 0 :(得分:1)

获取构建列表时可以尝试添加resultFilter参数:

$CurrentBuildUrl = $TfsUrl + "/_apis/build/builds?api-version=2.0"+ "&definitions=" + "&resultFilter=" + "&`$top=1"
  

resultFilter:enum {succeeded,partiallySucceeded}

答案 1 :(得分:0)

不,现在没有办法做到这一点。 “获取构建更改”api始终与上次成功构建相比,以获取当前构建中的更改。无论构建状态是成功还是部分成功,都没有任何选项可以将其设置为与上一次构建进行比较。您可以在VSTS User Voice上提交功能请求。