Azure DevOps job ignore failure

Viewed 19112

I have the following in my 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() 

I am trying to test whether a folder has had a change made, so I can publish artifacts from that directory.

The problem I am having is that if there isn't anything written to the folder, the script fails with a Bash exited with code '1'. (this is what I want) which in turn makes the whole build fail.

If I add continueOnError then the following jobs always run the succeeded job.

How can I let this job fail, without it failing the entire build?

3 Answers

I didn't figure out how to ignore a failed job, but this is how I solved this particular problem

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') 

(although it turns out that Azure Devops does what I was trying to create here already - path filters triggers!)

Related