You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

流水线结束后将工作项关联至Azure DevOps构建,为何未显示在相关工作项中

解决流水线结束后关联工作项至构建并显示在相关列表的方法

为什么手动添加"Integrated in Build"链接不生效

构建详情的"Related Work Items"列表是构建实体自身维护的关联集合,而工作项上添加的"Integrated in Build"链接只是反向关联记录,不会自动触发构建端的关联数据同步,所以手动操作后不会显示在目标列表里。

可行解决方案:使用Azure DevOps REST API主动关联

通过调用官方REST API直接更新构建的关联工作项集合,步骤如下:

  • 获取目标构建ID:从构建详情页URL中提取,例如https://dev.azure.com/你的组织/你的项目/_build/results?buildId=1234中的1234就是构建ID。
  • 准备个人访问令牌(PAT):需授予**Build(读取和写入)以及Work Items(读取和写入)**权限。
  • 发送PATCH请求到API端点:
    端点地址:https://dev.azure.com/{你的组织}/{你的项目}/_apis/build/builds/{构建ID}/workitems?api-version=7.1-preview.2
    请求头:添加Content-Type: application/json和Authorization: Basic {Base64编码的PAT}(编码方式:将空用户名与PAT用冒号拼接后做Base64编码)
    请求体示例(JSON格式,包含要关联的工作项信息):
    [
      {
        "id": 5678,
        "url": "https://dev.azure.com/你的组织/你的项目/_apis/wit/workItems/5678"
      }
    ]
    
  • 调用API后刷新构建详情页,即可看到新增的关联工作项。

可选的批量/自动化方式

如果需要批量处理或在流水线结束时自动关联,可在流水线中添加PowerShell/Azure CLI任务,调用上述API完成操作。例如PowerShell脚本示例:

$org = "你的组织"
$proj = "你的项目"
$buildId = "$(Build.BuildId)"
$pat = "你的PAT"
$encodedPat = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))

$workItems = @(
    @{ id = 5678; url = "https://dev.azure.com/$org/$proj/_apis/wit/workItems/5678" }
)

$body = $workItems | ConvertTo-Json

Invoke-RestMethod -Uri "https://dev.azure.com/$org/$proj/_apis/build/builds/$buildId/workitems?api-version=7.1-preview.2" `
    -Method Patch `
    -Headers @{ Authorization = "Basic $encodedPat" } `
    -Body $body `
    -ContentType "application/json"

内容的提问来源于stack exchange,提问作者dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:43:09