我可以使用 Powershell 导出 azure devops 管道运行历史吗?

Posted

技术标签:

【中文标题】我可以使用 Powershell 导出 azure devops 管道运行历史吗?【英文标题】:Can I export azure devops pipelines run history using Powershell? 【发布时间】:2021-12-17 22:27:58 【问题描述】:

所以我想知道的是,是否有可能生成一份报告,告诉我们在过去一个月中运行的所有管道、它们花费了多长时间、是否有任何故障。

如果是这样,我该怎么做?

这是我目前得到的一些脚本

$strURL = "https://dev.azure.com/chealey/personal test/_apis/build/builds?api-version=5.1"
$filePath="D:\"
$fileName=$filePath+"\pipeline.json"
$pipeline = Invoke-RestMethod -Uri $strURL -Headers @   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
 -Method GET -OutFile $fileName 

【问题讨论】:

您是从查看 Azure DevOps 的 REST API 文档开始的吗? 我一直在看。我很新,所以理解起来有点烦人。 文档和谷歌是很好的起点。如果您有具体的实施问题需要帮助,请随时在此处提出具体问题。 谢谢你:)。好吧,我不太确定的一件事是我把脚本放在哪里。我是否将它克隆到 Azure devops,在 powershell/VS 代码中运行它?我找到了一个脚本,它添加到了问题描述中。 Iv 添加了组织/项目名称,但出现错误。一个是“找不到资源”和“变量“管道”已分配但从未使用过。 这取决于您打算如何使用该脚本。出于开发目的,在本地运行它就可以了。不要只是从其他来源复制和粘贴代码而不了解您正在使用的代码。由于SYSTEM_ACCESSTOKEN 变量的存在,您在问题中提出的脚本显然设计为作为Azure Pipeline 的一部分运行。 【参考方案1】:

您可以运行 Rest Api:https://docs.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/list?view=azure-devops-rest-6.1

例如:

$user = ""
$token = $env:SYSTEM_ACCESSTOKEN

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("0:1" -f $user,$token)))
$orgUrl = $env:SYSTEM_COLLECTIONURI
$teamProject = $env:SYSTEM_TEAMPROJECT


$restApiGetBuildDefinitions = "$orgUrl/$teamProject/_apis/build/definitions?api-version=6.1-preview.7"
$restApiGetBuildRunsTemplate = "$orgUrl/$teamProject/_apis/pipelines/BUILD_DEF_ID/runs?api-version=6.1-preview.1"


function InvokeGetRequest ($GetUrl)
    
    return Invoke-RestMethod -Uri $GetUrl -Method Get -ContentType "application/json" -Headers @Authorization=("Basic 0" -f $base64AuthInfo)    



$buildDefs = InvokeGetRequest $restApiGetBuildDefinitions

foreach ($buildDef in $buildDefs.value)

    $restApiGetBuildRuns = $restApiGetBuildRunsTemplate -replace "BUILD_DEF_ID", $buildDef.id

    $buildRuns = InvokeGetRequest $restApiGetBuildRuns

    if ($buildRuns.count -gt 0)
    
        Write-Host "Build Definition:" $buildDef.name
        Write-Host "| Run Id | Start Date | Finish Date | Result |"
        Write-Host "|--------|------------|-------------|--------|"

        foreach ($buildRun in $buildRuns.value)
        
            Write-Host "|" $buildRun.id "|" $buildRun.createdDate "|" $buildRun.finishedDate "|" $buildRun.result "|"
        
    

【讨论】:

我对这个答案投了反对票,因为它只是为这个人提供了代码。我们应该帮助人们学习编码,而不是为他们编写代码。

以上是关于我可以使用 Powershell 导出 azure devops 管道运行历史吗?的主要内容,如果未能解决你的问题,请参考以下文章

Powershell:将所有具有“NetworkRuleSet”属性的 Azure 存储帐户列出/导出到 CSV

Azure PowerShell (14) 批量导出Azure ASM ACL和ARM NSG配置信息

Azure按订阅,资源组,资源类型导出所有资源powershell命令

powershell Powershell命令用于导出Azure AD并导入到本地AD

Azure导出所有用户权限---powershell命令

尝试将数据库导出到 Azure 中的存储帐户时出现 403 错误