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

如何在Azure DevOps流水线执行失败时自动创建Bug

如何在Azure DevOps流水线执行失败时自动创建Bug?

完全可以实现,下面是两种常用的落地方式:

方法一:使用Azure DevOps内置的「Create Bug」任务

  • 在流水线的末尾添加Create Bug任务,在任务的「控制选项」中设置运行此任务为「只有当任务失败时」(或更精确的表达式:eq(variables['Agent.JobStatus'], 'Failed'))
  • 配置任务核心参数:
    • 标题:用动态变量生成,比如$(Build.DefinitionName) - 流水线失败于 $(Build.BuildNumber)
    • 描述:填入流水线关键信息,比如失败阶段、日志链接($(Build.LogUri))、触发分支等
    • 按需设置指派对象、优先级、迭代路径等字段
  • 确保执行该任务的服务账号拥有项目内创建Bug的权限

方法二:通过PowerShell脚本调用Azure DevOps REST API

如果需要更灵活的逻辑(比如去重、自定义字段赋值),可以用脚本实现:

  1. 编写PowerShell脚本,调用Azure DevOps工作项REST API创建Bug:
$orgUrl = "https://dev.azure.com/你的组织名"
$projectName = "你的项目名"
$pat = "$(System.AccessToken)" # 流水线内置系统令牌,需在流水线设置中启用「允许脚本访问OAuth令牌」

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

$bugData = @(
    @{
        op = "add"
        path = "/fields/System.Title"
        value = "$(Build.DefinitionName) - 流水线失败于 $(Build.BuildNumber)"
    },
    @{
        op = "add"
        path = "/fields/System.Description"
        value = "流水线链接:$(Build.Uri)`n失败阶段:$(Agent.JobName)`n触发分支:$(Build.SourceBranch)"
    },
    @{
        op = "add"
        path = "/fields/Microsoft.VSTS.Common.Priority"
        value = 2
    }
) | ConvertTo-Json

Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/$Bug?api-version=7.1-preview.3" -Method Post -Headers $headers -Body $bugData
  1. 将脚本作为PowerShell任务添加到流水线,同样设置运行条件为流水线失败时执行
  2. 在流水线的「代理作业」设置中,勾选「允许脚本访问OAuth令牌」,确保脚本能获取到权限

额外注意事项

  • 若要避免重复创建Bug,可以在脚本中先调用查询API,检查是否已有对应流水线编号的失败Bug,再决定是否创建
  • 可以根据流水线的失败类型(构建失败/发布失败),自定义Bug的分类或标签字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:31:34