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?
There is a option called continueOnError
. It's set to false by default. Change this to true and your task won't stop the job from building.
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/tasks?view=azure-devops&tabs=yaml#controloptions
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!)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With