Azure DevOps作业忽略失败

时间:2018-10-31 05:22:27

标签: azure azure-devops

我的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,则以下作业将始终运行成功的作业。

如何让这项工作失败,而又不会使整个构建失败?

2 个答案:

答案 0 :(得分:0)

我没有弄清楚如何忽略失败的工作,但这就是我解决此特定问题的方法

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已经完成了我试图在此处创建的操作-路径筛选器触发器!)

答案 1 :(得分:0)

有一个名为continueOnError的选项。默认情况下设置为false。将其更改为true,您的任务将无法停止工作。

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