在Azure DevOps管道中测试失败时发送Ms Teams通知



我有e2e测试,将在午夜触发运行。现在我想在测试失败时向MS Teams频道发送通知。

- task: O365PostMessageRelease@0
inputs:
addressType: 'url'
url: 'https://hans.webhook.office.com/webhookb2/cfe11f3f-69ee-4447-ad1b'
messageType: 'message'
title: 'Test Result'
summary: 'test result summary'
text: 'here you can see the last test run results'
includeLink: true
linkText: 'View Release Detail'

测试结果作为如下的工件发布

- publish: junit-result.xml
artifact: cypress_results_combined

现在我想只在测试失败时发送通知。我怎么才能做到呢?

您可以为O365PostMessageRelease@0指定一个条件,以便它只在满足该条件时运行。

可以指定每个阶段、作业或步骤所处的条件运行。默认情况下,如果作业或阶段不依赖于任何操作,则运行它其他作业或阶段,或者它所依赖的所有作业或阶段已经完成并成功了。默认情况下,如果没有,则运行一个步骤它的工作失败了,它之前的步骤也失败了完成了。您可以通过强制使用阶段、作业或步骤来运行,即使先前的依赖项失败,或者通过指定自定义条件。

可以指定运行步骤、作业或阶段的条件。

  • 仅当同一代理池的所有先前依赖项都存在时成功了。如果您有不同的代理池,这些阶段或工作将并发运行。如果没有条件,这是默认值

  • 即使先前的依赖项失败,除非运行被取消。对于这种情况,在YAML中使用succededorfailed()。

  • 即使先前的依赖项失败,即使运行失败取消了。对于这种情况,在YAML中使用always()。

  • 仅当先前的依赖项失败时。在YAML中使用failed()

  • 自定义条件

根据测试执行的方式和失败处理的方式(这部分不在讨论范围内),有几个选项

  1. 指定condition: failed(),只在管道失败时运行通知任务
  2. 根据测试执行步骤/作业的输出创建自定义条件

在文档

中关于指定条件的部分有更多的细节和示例

如果您的测试步骤没有返回错误代码到管道(显示通过),但只记录junit-result.xml文件中的测试结果,您需要解析xml文件(例如:powershell任务)并获得'失败'测试用例值,将其设置为变量,在通知任务的条件下评估变量值。

最新更新