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

配置VSTS Azure发布定义后,发布失败时能否创建Bug/工作项?

当然可以实现!而且Azure DevOps(也就是你提到的VSTS)提供了好几种灵活的方式来满足这个需求,下面我给你拆解具体的实现路径:

方法1:用内置任务快速配置

这是最简便的方式,不需要写代码就能搞定:

  • 打开你的发布定义,找到对应部署阶段的任务列表,或者直接在阶段末尾添加新任务
  • 添加「Create Work Item」任务,配置核心信息:
    • 选择你的项目和目标工作项类型(比如Bug)
    • 标题可以用系统变量自动填充,比如*发布失败:$(Release.ReleaseName) - $(Environment.Name)*,这样能直接看到是哪个发布、哪个环境出了问题
    • 描述字段也可以自动插入失败详情,比如:发布触发人:$(Release.Deployment.RequestedFor),失败日志链接:$(Release.Deployment.LogUrl)
    • 关键一步:在任务的「控制选项」里,把「运行此任务」设置为即使前面的任务失败,除非已取消,或者用自定义条件eq(variables['Agent.JobStatus'], 'Failed'),确保只有部署失败时才会创建工作项
方法2:PowerShell脚本实现自定义逻辑

如果需要更灵活的规则(比如根据不同的失败原因创建不同类型的工作项,或者添加更多自定义字段),可以用PowerShell调用Azure DevOps的REST API:

  • 在发布定义中添加一个PowerShell任务,同样设置执行条件为失败时运行
  • 编写脚本,核心是调用工作项创建接口,示例代码如下(记得在任务的「高级」选项里勾选「允许脚本访问OAuth令牌」,这样才能拿到内置的$(System.AccessToken)):
# 配置参数
$orgUrl = "$(System.TeamFoundationCollectionUri)"
$projectName = "$(System.TeamProject)"
$pat = "$(System.AccessToken)"
$workItemType = "Bug"
$title = "发布失败:$(Release.ReleaseName) - $(Environment.Name)"
$description = @"
部署失败详情:
- 请求人:$(Release.Deployment.RequestedFor)
- 发布ID:$(Release.ReleaseId)
- 失败环境:$(Environment.Name)
- 日志链接:$(Release.Deployment.LogUrl)
"@

# 构造请求体
$body = @"
[
  {
    "op": "add",
    "path": "/fields/System.Title",
    "value": "$title"
  },
  {
    "op": "add",
    "path": "/fields/System.Description",
    "value": "$description"
  },
  {
    "op": "add",
    "path": "/fields/System.AssignedTo",
    "value": "$(Release.Deployment.RequestedFor)"
  }
]
"@

# 设置请求头
$headers = @{
  "Authorization" = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
  "Content-Type" = "application/json-patch+json"
}

# 调用API创建工作项
Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/`$$workItemType?api-version=7.1-preview.3" -Method Post -Headers $headers -Body $body
方法3:全局警报规则自动触发

如果你希望所有发布失败时都自动创建工作项,不需要逐个修改发布定义,可以用警报规则:

  • 进入Azure DevOps项目的「项目设置」→「警报」
  • 新建警报规则,触发条件选择「发布部署失败」,可以根据需要筛选特定的发布管道或环境
  • 在「操作」环节选择「创建工作项」,配置工作项类型、默认分配人等信息
  • 保存规则后,只要符合条件的发布失败,就会自动生成对应的工作项

根据你的实际需求选就行:内置任务最快上手,脚本适合复杂定制,警报规则适合全局统一配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:54:49