首页 > 解决方案 > 未通过 Azure DevOps API 获取完整的管道运行信息

问题描述

为了解决这个问题为通过管道部署的最后一个分支创建仪表板,我想我会尝试使用 Azure DevOps API。它在大多数情况下都可以正常工作,但是我观察到 GET Run API 不会返回 mult-repo 管道的所有存储库信息(https://docs.microsoft.com/en-us/rest/api/azure/ devops/pipelines/runs/get?view=azure-devops-rest-6.0)。它似乎只返回selfrepo 的数据。例如,我的一次运行的响应负载如下所示:

    "resources": {
        "repositories": {
            "self": {
                "repository": null,
                "refName": "refs/heads/master",
                "version": "commit-hash"
            }
        }
    },

尽管事实上还有其他几个 repos 正在检查中。这是一个错误还是预期的?有解决方法吗?

谢谢!

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

解决方案


我们可以通过 F12 获取 REST API,这个 REST API 是https://dev.azure.com/{Org name}/{Project name}/_build/results?buildId={Build ID}&__rt=fps&__ver=2

电源外壳脚本:

cls

$connectionToken="{PAT}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "https://dev.azure.com/{Org name}/{Project name}/_build/results?buildId={Build ID}&__rt=fps&__ver=2"
$Result = Invoke-RestMethod -Uri $URL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get 
Write-Host "This build sources are"$Result.fps.dataProviders.data."ms.vss-build-web.run-details-data-provider".repositoryResources.alias

结果:

在此处输入图像描述

注意:这个yaml文件保存在reposample中,selfrepo就是samplerepo


推荐阅读