csv - 将错误从 Azure Devops 提取到带有时间戳的状态变化的 CSV
问题描述
背景
我基本上是在做一个审查,我看到团队 A 花了多长时间来解决分配给他们的错误。我需要一个可以产生这些结果的查询,然后将其下载到 CSV 文件中。
任务
我还需要从 devops 中提取具有各自状态流('Raised'-'Ready for Test'-'in progress'-等)的 bug,以及它们相应的时间戳。因此,对于错误 xi,可以看到它在 xx/xx/xx 上被分配给成员 p,状态为“进行中”,然后在 xx/xx/xx 上由成员 p 或任何路径更改为“准备测试”各州,以及该错误的指定人员。
这类似于绩效评估。有什么方法可以使用查询来实现吗?
解决方案
我从未见过从 Azure DevOps (ADO) Boards Query UI 中提取历史记录的方法。您可以查询 history,但这不是您想要做的。
也就是说,您可以通过工作项的 ADO API轻松完成此操作。下面是一个示例 PowerShell 脚本。
function Get-WorkItemRevisions {
param (
[Parameter(HelpMessage = 'Personal Access Token for Azure DevOps. Default=uses a pat token stored in environment variables named AZURE_DEVOPS_EXT_PAT')]
[String] $PersonalToken = $Env:AZURE_DEVOPS_EXT_PAT,
[Parameter(HelpMessage = 'Core uri for Azure DevOps. Default=dev.azure.com')]
[String] $CoreServer = 'dev.azure.com',
[Parameter(HelpMessage = 'Organization to access.')]
[string]$Organization = 'PUT_YOUR_ORGNAME_HERE',
[Parameter(Mandatory = $true)]
[String] $WorkItemId,
[Parameter(HelpMessage = 'The Azure DevOps API version to use. Default=6.0')]
[String] $ApiVersion = '6.0'
)
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PersonalToken)"))
$headers = @{authorization = "Basic $token" }
$uri = "https://$coreServer/$Organization/_apis/wit/workitems/${WorkItemId}/revisions/?api-version=$ApiVersion"
Write-Verbose -Message "API URL: $uri"
$result = Invoke-RestMethod -uri $uri -Headers $headers -Method Get
$result
}
$bugs = @(
'4390'
'7399'
'3675'
)
foreach ($bugId in $bugs) {
$revisions = Get-WorkItemRevisions -WorkItemId $bugId -Verbose
$prevState = ''
foreach ($revision in $revisions.value) {
$id = $revision.id
$rev = $revision.rev
$changedDate = $revision.fields.'System.ChangedDate'
$changedBy = $revision.fields.'System.ChangedBy'.displayName
$assignedTo = $revision.fields.'System.AssignedTo'.displayName
$state = $revision.fields.'System.State'
# Only write to CSV if the state has changed
if ($prevState -ne $state){
Add-Content -Path performance-review.csv -Value "$id, $rev, $changedDate, $changedBy, $state, $assignedTo"
$prevState = $state
}
}
}
为了运行此脚本,您需要做的一件事是:
- 生成个人访问令牌 (PAT)
- --either-- 将 PAT 添加到名为
$Env:AZURE_DEVOPS_EXT_PAT
- -- 或 -- 使用参数调用
Get-WorkItemRevisions
函数-PersonalToken
。 - 改成
PUT_YOUR_ORGNAME_HERE
你的组织名,在ADO uri后面可以找到https://dev.azure.com/{orgname}
下面是上面脚本的示例输出。注意:为了清楚起见,我添加了标题行并将真实姓名更改为迪士尼角色名称。
像这样使用 PowerShell 可能比使用 ADO Boards 查询 UI 更好,因为您可以按计划运行此脚本并将结果发布到 Slack、MS Teams、通过电子邮件发送等。您可以扩展通过使用ADO API for Query Wiql来查询错误而不是硬编码它们的脚本。
上述代码的替代方案是用于报告或将 PowerBI 连接到 ADO 数据并构建报告的 ADO API。
推荐阅读
- regex - Powershell替换文本文件中多次出现的正则表达式
- html - 如何从 SVG img 中删除额外的高度
- python-3.x - Google Cloud Functions (GCF) - 使用 apt-get 安装包
- blockchain - Corda Azure 单一分类帐资源 - Web 服务器问题中没有 Cordapp
- javascript - 无法在请求中编辑变量
- bash - 如何安全地提前退出 bash 脚本?
- c - C编译器的区别?Char 中的 NUL 控制字符
- angular - ionic 4 - 如何检索传递给模态的数据
- python - 无法在 Python 中使用 Stem 和 Tor 更改我的 IP 地址?
- asp.net-mvc - ASP.NET MVC 引导日期选择器错误