Azure DevOps:如果发生任何故障,将在任务上运行自定义条件

时间:2019-04-19 06:33:39

标签: azure-devops azure-pipelines-release-pipeline

如果阶段中的任何操作失败,我想发送通知。如何在Release管道的任务中设置条件,以便在以前发生任何故障时运行任务?

带标记的选项仅适用于前任。 enter image description here

但是考虑到某个情况,有一个任务失败了,那么有一个任务将始终运行,并且在此之后就是如果任何事情失败我想运行的任务。

3 个答案:

答案 0 :(得分:1)

这是一个旧线程,但是如果有人面临相同的问题,我设法通过使用预定义变量[Agent.JobStatus]来达到“如果失败的条件”。它具有以下状态:

  1. 取消
  2. 失败
  3. 成功
  4. SucceededWithIssues(部分成功)

具有上述值时,我设置了以下自定义条件:

eq(variables['Agent.JobStatus'], 'SucceededWithIssues')

如果希望有多个自定义条件,则可以按如下方式使用逻辑运算符:

or(eq(variables['Agent.JobStatus'], 'Canceled'),eq(variables['Agent.JobStatus'], 'Failed'),eq(variables['Agent.JobStatus'], 'SucceededWithIssues'))

Azure Devops custom condition

结果

enter image description here

参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables

答案 1 :(得分:0)

我认为您需要使用自定义条件并将其设置为failed()

引用:

  

不带参数的情况下,仅当   依赖图失败。

阅读:
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml#job-status-functions

答案 2 :(得分:0)

如另一个答案中所述,您需要使用自定义条件并将其设置为failed()。但是,仅凭这一点并不能解决问题。我相信您可以通过在其Notification字段中列出dependsOn作业之前正在运行的所有先前作业,来实现所需的目标。这样,如果列出的任何作业失败,您的Notification作业将被执行。

jobs:
- job: Build
  (...)
- job: CleanUp
  (...)
- job: Notification
      dependsOn: 
      - Build
      - Cleanup
      condition: failed()
      steps:
        - task: (...)