【问题标题】:Azure DevOps job ignore failureAzure DevOps 作业忽略失败
【发布时间】:2018-10-31 05:22:26
【问题描述】:

我的 azure-pipelines.yml 中有以下内容

jobs:
- job: TestifFolder1Exists
  pool:
    vmImage: 'ubuntu-16.04'

  steps:
  - bash: git log -1 --name-only | grep -c Folder1
    failOnStderr: false

- job: Folder1DoesntExist
  pool:
    vmImage: 'ubuntu-16.04'
  dependsOn: TestifFolder1Exists
  condition: failed() 

- job: Folder1DoesExist
  pool:
    vmImage: 'ubuntu-16.04'
  dependsOn: TestifFolder1Exists
  condition: succeeded() 

我正在尝试测试一个文件夹是否进行了更改,以便我可以从该目录发布工件。

我遇到的问题是,如果文件夹中没有写入任何内容,则脚本将失败并显示 Bash exited with code '1'.(这就是我想要的),这反过来又会导致整个构建失败。

如果我添加continueOnError,则以下作业始终运行成功的作业。

我怎样才能让这项工作失败,而不会使整个构建失败?

【问题讨论】:

  • 我不确定您要实现的目标是否有意义。基本上,您需要一个条件,并且您试图以失败的方式模拟该条件……这可能不是一个好主意?为什么不捕获脚本中的错误并将一些数据输出到管道中的作业并根据传递的数据值做出决定?
  • 这就是我目前想要做的——我的想法是,如果你可以测试一个工作状态,那不应该产生一个失败的构建
  • 这个特定的问题似乎是做作的,并不完全有意义,但能够忽略工作失败的原则是完全有用的。
  • 这能回答你的问题吗? Continue Azure Pipeline on failed task

标签: azure azure-devops


【解决方案1】:

有一个名为continueOnError 的选项。它默认设置为 false。将此更改为 true,您的任务不会停止构建作业。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/tasks?view=azure-devops&tabs=yaml#controloptions

【讨论】:

  • 但是如果这个任务失败了,构建会失败吗?
  • 对于continueOnError,失败的任务会将状态设置为SucceededWithIssues。构建不会失败但会成功并出现警告符号。
【解决方案2】:

我不知道如何忽略失败的工作,但这就是我解决这个特殊问题的方法

jobs:
- job: TestifFolder1Exists
  pool:
    vmImage: 'ubuntu-16.04'

  steps:
  - bash: |
      if [ "$(git log -1 --name-only | grep -c Folder1)" -eq 1 ]; then 
        echo "##vso[task.setVariable variable=Folder1Changed]true"
      fi
  - bash: echo succeeded
    displayName: Perform some task
    condition: eq(variables.Folder1Changed, 'true') 

(尽管事实证明 Azure Devops 已经完成了我在这里尝试创建的操作 - 路径过滤器触发器!)

【讨论】:

  • 路径过滤器仅适用于整个管道。如果您想跳过/添加一些步骤/作业/阶段,您需要使用上述解决方法。
【解决方案3】:

在 powershell 任务中有 ignoreLASTEXITCODE 属性,它关闭退出代码传播回管道,因此您可以在下一个任务中分析它。不知道为什么没有为 bash 提供它。 https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/powershell?view=azure-devops

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多