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

Azure DevOps流水线测试失败时如何发送MS Teams通知

实现仅测试失败时推送MS Teams通知的配置方案

方案1:精准匹配JUnit测试结果(推荐,不受任务状态配置影响)

步骤1:新增测试结果解析步骤,设置失败标记变量

在你发布cypress_results_combined工件的步骤前,新增一个PowerShell步骤读取JUnit结果,设置自定义变量标记是否有测试失败:

- pwsh: |
    # 读取JUnit结果文件统计失败用例数
    [xml]$testResult = Get-Content junit-result.xml
    $totalFailures = ($testResult.testsuites.testsuite | Measure-Object failures -Sum).Sum
    # 输出流水线变量,TestFailed为true表示有失败用例
    Write-Host "##vso[task.setvariable variable=TestFailed;isOutput=true]$($totalFailures -gt 0)"
  name: CheckTestResult
  displayName: 检测测试失败用例

如果使用Linux代理,替换为Bash版本的解析步骤即可。

步骤2:给Teams通知任务新增执行条件

修改你现有的O365PostMessageRelease@0任务配置,新增condition字段,仅当TestFailed变量为true时执行任务:

- task: O365PostMessageRelease@0
  # 同一Job内使用该条件即可
  condition: and(succeededOrFailed(), eq(variables['CheckTestResult.TestFailed'], 'true'))
  # 跨Job/跨阶段使用该条件
  # condition: and(succeededOrFailed(), eq(dependencies.<Job名>.outputs['CheckTestResult.TestFailed'], 'true'))
  inputs:
      addressType: 'url'
      url: 'https://hans.webhook.office.com/webhookb2/cfe11f3f-69ee-4447-ad1b'
      messageType: 'message'
      title: '❌ 午夜e2e测试运行失败'
      summary: '本次定时e2e测试出现失败用例'
      text: '点击下方链接查看测试详情'
      includeLink: true
      linkText: 'View Release Detail'

方案2:简化配置(适用测试失败时运行任务直接报错的场景)

如果你运行e2e测试的任务本身配置了测试失败即返回任务失败状态(比如Cypress任务开启了failOnNonZeroExit: true),不需要额外解析JUnit,直接给通知任务加如下条件即可:

- task: O365PostMessageRelease@0
  condition: failed() # 仅当前面所有步骤出现失败时才执行
  inputs:
      # 其余原有配置保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:48:04