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

VSTS build RestAPI retrieve changesets from last successful or partial successful build

我在 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

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

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

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

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

这可能吗?

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

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

resultFilter: enum { succeeded, partiallySucceeded}

不,目前没有任何方法可以做到这一点。 "get build changes" api 始终与上次成功构建进行比较,以获取当前构建中的更改。无论构建状态是成功还是部分成功,都没有任何选项可以将其设置为与上次构建进行比较。您可以在 VSTS User Voice.

上为此提交功能请求