'YAML stage dependsOn other stage but skipped
Stage is getting skipped eventhough all dependencies seems conditions are present.
Here are rquirements for a pipeline:
- stage 'NextTest' should be run after stage 'FakeTests' completed
- stage 'NextTest' should not depend on 'FakeTests' stage result (even if 'FakeTests' failed 'NextTest' should be run)
- stage 'NextTest' should not run if 'ToSkip' stage failed
- stage 'NextTest' should run if 'ToSkip' stage skipped.
Here is yaml:
stages:
- stage: ToSkip
jobs:
- job: Skip
steps:
- powershell: |
Write-Host "Something"
- stage: FakeTests
jobs:
- job: PassTest
steps:
- powershell: |
Write-Host "Test Passed"
- job: FailTest
steps:
- powershell: |
Write-Host "Test Failed"
exit 1
- stage: NextTests
dependsOn:
- FakeTests
- ToSkip
condition: |
and(
in(stageDependencies.FakeTests.result, 'Succeeded', 'SucceededWithIssues', 'Skipped', 'Failed'),
in(stageDependencies.ToSkip.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
)
jobs:
- job: NextPassTest
steps:
- powershell: |
Write-Host "Test Passed"
This YAML is used as AzureDevOps pipeline.
However if 'ToSkip' skipped and 'FakeTests' failed 'NextTest' are skipped as well.
Why is that? And how to correct it?

Solution 1:[1]
By looking at the stageDependencies JSON structure, there's no key called 'result' under <STAGE_NAME>. you should refer results through
stageDependencies.<STAGE_NAME>.<JOB_NAME>.result
"stageDependencies": {
"<STAGE_NAME>": {
"<JOB_NAME>": {
"result": "Succeeded|SucceededWithIssues|Skipped|Failed|Canceled",
"outputs": {
"stepName.variableName": "value"
}
},
"...": {
//another job
}
},
"...": {
//anotherstage
}
}
Try this with your code
condition: |
and(
in(stageDependencies.FakeTests.PassTest.result, 'Succeeded', 'SucceededWithIssues', 'Skipped', 'Failed'),
in(stageDependencies.FakeTests.FailTest.result, 'Succeeded', 'SucceededWithIssues', 'Skipped', 'Failed'),
in(stageDependencies.ToSkip.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
)
For more information, you might want to checkout this page
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Shawn Chen |
