问题描述
当前,我们在ci环境(Azure管道)中使用Veracode进行安全检查。 Veracode有一个azuredevops插件,该插件会在azure板上作为工作项(缺陷,任务等)创建缺陷。但是,我们创建了一个史诗级的“安全性问题”,并且我们希望有一种方法可以通过管道进行链接,管道已经作为父/子与它已经创建的工作项关联。
我一直在寻找方法(第一次使用Azure API),但没有找到实现这种集成的任何特定方法(我确实看到了这一点,但是在这种情况下,他们创建了一个工作项,而不是链接2个已经存在的How to add work item as child to parent?)。
我确实与Veracode团队进行了交谈,但是此功能当前不可用。但是,我们可以添加自定义标签。
TL:DR:如何通过管道自动化在azureboard中查询某些工作项,并将其作为父项/子项链接到某个已创建的史诗。
谢谢!
解决方法
您可以使用update work item REST API在两个工作项之间添加链接。由于您正在管道中使用REST API,因此可以在PowerShell任务中使用运行REST API。以下是将子链接添加到现有工作项的示例:
$organization = "{Organization name}"
$project = "{Project name}"
$pat = "{PAT}"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$pat)))
$url = "https://dev.azure.com/$organization/$project/_apis/wit/workitems/{Work item id}?api-version=5.1"
$contentType = "application/json-patch+json"
$body= @'
[
{
"op": "add","path": "/relations/-","value": {
"rel": "System.LinkTypes.Hierarchy-Forward",//Add a child link
##"rel": "System.LinkTypes.Hierarchy-Reverse",//Add a parent link
"url": "https://dev.azure.com/{Organization name}/{Project name}/_apis/wit/workItems/{Work item id}"
}
}
]
'@
Invoke-RestMethod -Uri $url -Method PATCH -ContentType $contentType -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body
您可以通过this API找到工作项关系类型。
如果要查询工作项,可以尝试使用Wiql。请参阅this example。