我可以使用 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命令