能否将Azure DevOps管道运行历史记录以Excel格式导出?

3

我希望能够分析Azure DevOps的构建和发布流水线运行情况,比如成功或失败的构建数量、在时间间隔内运行的作业数等。如果我们能够将构建和发布流水线历史记录导入Excel格式,那么这种类型的分析就可以很容易地完成。但是在Azure DevOps中,我找不到任何可以实现这一点的功能。是否有可能以Excel格式导出构建和发布流水线运行历史记录?


1
据我所知,没有直接将数据导出到Excel的方法,但是您可以使用Azure DevOps REST API获取数据并将其导出到Excel中。如果您需要REST API方面的任何帮助,请告诉我。 - Jayendran
2个回答

4

实际上,您可以从响应中选择所需的特定属性,并直接导出为*.csv文件,该*.csv文件可使用Microsoft Excel打开。

以下是参考样例:

Param(
   [string]$collectionurl = "https://dev.azure.com/{organization}",
   [string]$project = "ProjectName",
   [string]$user = "user",
   [string]$token = "PAT/Password",
   [string]$Filename = 'D:\temp\PipelineHistory.csv'
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

#BaseUrl
$buildsURL = "$collectionurl/$project/_apis/build/builds?api-version=5.1"

#Response           
$builds = (Invoke-RestMethod -Uri $buildsURL -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}).value

Write-host "Count of succeeded builds:" ($builds | where({$_.result -eq 'succeeded'})).count
Write-host "Count of failed builds:" ($builds | where({$_.result -eq 'failed'})).count

$results = @()

foreach($build in $builds){

    $customObject = new-object PSObject -property @{
          "BuildID" = $build.id
          "BuildNumber" = $build.buildNumber
          "Status" = $build.status
          "Result" = $build.result

        } 

    $results += $customObject       
}

$results | Select `
            BuildID,
            BuildNumber,
            Status,
            Result | export-csv -Path $filename -NoTypeInformation

你在哪里使用这段代码片段?它是什么编程语言?一些上下文会很有帮助。 - user14492

3
正如Jayendran所说,我们可以使用rest api将管道运行历史记录以Excel格式导出。
以下是我的PowerShell脚本示例:
$strURL = "https://dev.azure.com/{organization}/{project}/_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 

您可以向代理作业添加PowerShell任务来运行上述脚本。这样,您就可以以.json格式将管道历史记录下载到本地。
请注意,如果您在我的脚本中使用身份验证方法,则需要使用私有代理来运行并检查“允许脚本访问OAuth令牌”选项。
我以构建管道为例。发布管道也是如此。
更新:
然后,您可以使用JSON-to-Excel工具,快速将数据转换为Excel。前往Office应用商店https://store.office.com/en-us/app.aspx?assetid=WA104381080,免费添加它。
在Excel或Excel Online中打开后,您会看到一个JSON to Excel选项卡已添加到Excel中。单击打开并选择启动JSON to Excel。在打开的JSON to Excel中,输入JSON数据,然后单击GO。
希望这能帮到您。

感谢林雨霖提供宝贵的解决方案。这将解决我的许多问题。但我发现输出不是.xlsx格式,而是json格式。无论如何,我们也可以解析json以获得所需的结果。 - Pushkar Raj Sindal
1
@PushkarRajSindal,你可以使用Json-to-Excel工具将你的Json数据转换为Excel,请查看我的更新。 - Hugh Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接