【问题标题】:VSTS build RestAPI retrieve changesets from last successful or partial successful buildVSTS 构建 RestAPI 从上次成功或部分成功的构建中检索变更集
【发布时间】:2016-07-18 07:55:32
【问题描述】:

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

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

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

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

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

这可能吗?

【问题讨论】:

    标签: visual-studio powershell tfsbuild azure-devops


    【解决方案1】:

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

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

    resultFilter: enum { 成功,部分成功}

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多