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

Azure DevOps YAML流水线如何实现发布状态同步至工作项

实现方案

完全可以通过PowerShell调用Azure DevOps REST API实现该需求,无需额外第三方插件,核心逻辑是利用YAML流水线的内置变量获取关联工作项、当前部署环境信息,调用工作项更新接口完成关联,甚至可以完美复现经典发布流水线的部署控件展示效果。

前置准备

  • 给对应项目的「Build Service」账号分配工作项编辑权限,避免API调用鉴权失败
  • 开启流水线的Allow scripts to access the OAuth token选项,即可直接使用系统内置的System.AccessToken调用接口,无需单独存储个人访问令牌(PAT)

核心实现步骤

你可以直接在YAML流水线的部署阶段中加入以下PowerShell任务:

# 读取流水线内置变量,拆分关联的工作项ID列表
$workItemIdList = "$(Build.WorkItemIds)".Split(',', [System.StringSplitOptions]::RemoveEmptyEntries)
# 读取当前部署环境、版本号信息
$deployEnv = "$(Release.EnvironmentName)"
$deployVersion = "$(Build.BuildNumber)"
$orgName = "你的Azure DevOps组织名称"
$projectName = "你的项目名称"

# 构造请求头
$headers = @{
    Authorization = "Bearer $(System.AccessToken)"
    "Content-Type" = "application/json-patch+json"
}

# 批量更新所有关联工作项
foreach ($wiId in $workItemIdList) {
    $requestBody = @"
[
    {
        "op": "add",
        "path": "/fields/System.History",
        "value": "系统自动部署到 *$deployEnv* 环境,对应版本:$deployVersion"
    },
    {
        "op": "replace",
        "path": "/fields/Custom.LastDeployEnv",
        "value": "$deployEnv"
    }
]
"@
    Invoke-RestMethod -Method Patch -Uri "https://dev.azure.com/$orgName/$projectName/_apis/wit/workitems/$wiId?api-version=7.1-preview.3" -Headers $headers -Body $requestBody | Out-Null
}

补充说明

如果需要让工作项的部署控件正常展示YAML流水线的部署记录,只需在请求体中额外加入部署元数据的字段更新即可,效果和经典发布流水线的内置功能完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:09:02