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

如何获取Azure DevOps发布版本关联的工作项?

Azure DevOps发布管道获取特定版本工作项列表的实现方法

下面是两种在管道内实现的实用方案,直接就能落地:

方案一:用Azure DevOps CLI快速实现

  • 在发布管道里添加一个Azure CLI任务,类型选择Azure DevOps CLI
  • 借助内置系统变量和CLI命令抓取工作项,还能直接整理成可读格式,示例命令如下:
# 抓取当前发布关联的所有工作项ID
RELEASE_WORK_ITEMS=$(az pipelines release show --id $(Release.ReleaseId) --org $(System.TeamFoundationCollectionUri) --project $(System.TeamProject) --query 'workItems[*].id' -o tsv)

# 生成Markdown格式的工作项清单
echo "### 本次发布关联工作项清单" > work_items.md
for id in $RELEASE_WORK_ITEMS; do
    WI_INFO=$(az boards work-item show --id $id --org $(System.TeamFoundationCollectionUri) --project $(System.TeamProject) --query '[fields["System.Title"], fields["System.State"], fields["System.AssignedTo"].displayName]' -o tsv)
    echo "- 工作项#$id: $(echo $WI_INFO | cut -f1) | 状态: $(echo $WI_INFO | cut -f2) | 负责人: $(echo $WI_INFO | cut -f3)" >> work_items.md
done
  • 注意:要给CLI任务的服务连接配置足够权限,至少需要读取发布记录和工作项的权限

方案二:用PowerShell调用REST API自定义程度更高

如果需要更灵活的格式处理或扩展逻辑,用PowerShell调用REST API是更好的选择:

  • 添加一个PowerShell任务,记得在任务的「代理作业设置」里勾选「允许脚本访问OAuth令牌」,这样就能用系统自带的令牌访问API
  • 示例脚本:
# 直接用系统变量获取发布和项目信息
$releaseId = $(Release.ReleaseId)
$orgUrl = $(System.TeamFoundationCollectionUri)
$projectName = $(System.TeamProject)
$accessToken = $(System.AccessToken)

# 调用API获取发布关联的工作项ID列表
$wiListUrl = "$orgUrl$projectName/_apis/release/releases/$releaseId/workitems?api-version=7.1-preview.2"
$headers = @{ Authorization = "Bearer $accessToken" }
$workItemRefs = Invoke-RestMethod -Uri $wiListUrl -Headers $headers -Method Get

# 逐个获取工作项详情并整理
$workItemTable = @()
foreach ($ref in $workItemRefs.value) {
    $wiDetailUrl = "$orgUrl/_apis/wit/workitems/$($ref.id)?api-version=7.1-preview.3"
    $wiDetails = Invoke-RestMethod -Uri $wiDetailUrl -Headers $headers -Method Get
    $workItemTable += [PSCustomObject]@{
        ID = $ref.id
        Title = $wiDetails.fields.'System.Title'
        State = $wiDetails.fields.'System.State'
        Assignee = $wiDetails.fields.'System.AssignedTo'.displayName
    }
}

# 生成Markdown表格
$mdOutput = "### 本次发布工作项列表`n`n"
$mdOutput += "| 工作项ID | 标题 | 状态 | 负责人 |`n"
$mdOutput += "|----------|------|------|--------|`n"
$workItemTable | ForEach-Object {
    $mdOutput += "| #$($_.ID) | $($_.Title) | $($_.State) | $($_.Assignee) |`n"
}

# 保存文件供后续通知使用
$mdOutput | Out-File -FilePath "$(System.DefaultWorkingDirectory)/release_workitems.md" -Encoding UTF8

最后一步:通知开发团队

不管用哪种方案生成了工作项列表,都可以加个任务把内容发出去:

  • 用「发送电子邮件」任务把Markdown内容作为邮件正文发送给团队
  • 或者用Microsoft Teams的Webhook任务,把表格发到指定的团队频道

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:42:04