首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure Devops使用'Integrated‘链接运行查询

Azure Devops使用'Integrated‘链接运行查询
EN

Stack Overflow用户
提问于 2020-06-18 14:08:26
回答 2查看 1.4K关注 0票数 1

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

运行此查询将不返回任何内容(这些工作项的负载包含“Integrated”中设置的有效链接)。如果删除“Integrated”链接字段,则会得到工作项列表。

任何帮助都很感激。

Azure Devops,2019年在prem上。

EN

回答 2

Stack Overflow用户

发布于 2020-06-18 14:36:55

无法在工作项查询中使用Integrated in Build链接类型,因为此链接不指向工作项。在工作项查询中,只能对工作项链接和字段使用筛选器。在我们关于Azure DevOps服务的项目中,我们将自定义PowerShell步骤添加到CI构建中。此步骤在GIT提交中链接的工作项的Integration Build字段中添加一个版本号:

代码语言:javascript
运行
复制
$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字段中搜索您的版本号。

票数 3
EN

Stack Overflow用户

发布于 2020-06-22 10:28:37

首先需要澄清的是,您在查询中选择的Integrated in Build字段不是开发中的有效构建链接。

此外,查询将获取工作项,并且无法返回开发链接信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62451897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档