我正在寻找一种方法来检索票证(Task,Bug)的“Development”部分中包含的信息,更具体地说,检索“Integrated”链接值,以便用于查询:


运行此查询将不返回任何内容(这些工作项的负载包含“Integrated”中设置的有效链接)。如果删除“Integrated”链接字段,则会得到工作项列表。
任何帮助都很感激。
Azure Devops,2019年在prem上。
发布于 2020-06-18 14:36:55
无法在工作项查询中使用Integrated in Build链接类型,因为此链接不指向工作项。在工作项查询中,只能对工作项链接和字段使用筛选器。在我们关于Azure DevOps服务的项目中,我们将自定义PowerShell步骤添加到CI构建中。此步骤在GIT提交中链接的工作项的Integration Build字段中添加一个版本号:
$user = ""
$token = "$(System.AccessToken)"
$teamProject = "$(System.TeamProject)"
$orgUrl = "$(System.CollectionUri)"
$buildDefinitionName = "$(Build.DefinitionName)"
$buildNumber = "$(Build.BuildNumber)"
$repoName = "$(Build.Repository.Name)"
$bodyWorkItemInt = "[{op: `"add`", path: `"/fields/Microsoft.VSTS.Build.IntegrationBuild`", value: `"{value}`"}]"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$uriSearchCommit = "$orgUrl/$teamProject/_apis/git/repositories/$repoName/commits?api-version=5.1&searchCriteria.toCommitId={commitId}&searchCriteria.fromCommitId={commitId}&searchCriteria.includeWorkItems=true"
$last_commit = & git show --format=%H HEAD
Write-Host $last_commit
if ($last_commit.Count -gt 0)
{
$uriSearchCommit = $uriSearchCommit -replace "{commitId}", $last_commit[0]
Write-Host $uriSearchCommit
$resultCommit = Invoke-RestMethod -Uri $uriSearchCommit -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
if ($resultCommit.count -eq 1)
{
if ($resultCommit[0].value[0].workItems.Count -gt 0)
{
foreach ($workItem in $resultCommit[0].value[0].workItems)
{
Write-Host "Work item:" $workItem
$resultWorkItem = Invoke-RestMethod -Uri $workItem.url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$int_value = $buildDefinitionName + "_" + $buildNumber
if ($resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild' -ne $null)
{
if ($resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild'.Contains($buildDefinitionName))
{
Write-Host "Work item contains the label:" $buildDefinitionName
$int_value = ""
}
else
{
$int_value += ";" + $resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild'
}
}
if ($int_value -ne "")
{
$bodyWorkItemInt = $bodyWorkItemInt -replace "{value}", $int_value
$uriUpdateWI = "$orgUrl/$teamProject/_apis/wit/workitems/{id}?api-version=5.1" -replace "{id}", $resultWorkItem.id
Invoke-RestMethod -Uri $uriUpdateWI -Method Patch -ContentType "application/json-patch+json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyWorkItemInt
}
}
}
}
}然后,您可以使用工作项查询在Integration Build字段中搜索您的版本号。
发布于 2020-06-22 10:28:37
首先需要澄清的是,您在查询中选择的Integrated in Build字段不是开发中的有效构建链接。

此外,查询将获取工作项,并且无法返回开发链接信息。
https://stackoverflow.com/questions/62451897
复制相似问题