Я воспроизвел приведенный выше сценарий, когда я установил условия для задания на этапе deployment to ua
. Задание «Развернуть Ip-ресурсы» было бы пропущено, поскольку условие было ложным. Но этап deployment to ua
был оценен успешно. И следующий этап будет продолжен.
Способ исправить это - установить условия и зависимости на уровне этапов, а не на уровне заданий. Например, ниже:
Этап Выпуск B зависит от Выпуска A и будет пропущен, если этап A не выполнен (/ пропущен) Стадия Выпуск A будет пропущен (вместо задания B пропускается, если условие задано на уровне задания), если условие ложно.
stages:
- stage: Build
jobs:
- job: A
steps:
- powershell: echo "Stage A"
- stage: Release_A
dependsOn: Build
condition: and(succeeded('Build'), eq(variables['build.sourceBranch'], 'refs/heads/master'))
jobs:
- job: B
steps:
- powershell: echo "Stage B"
- stage: Release_B
dependsOn: Release_A
condition: succeeded('Release_A')
jobs:
- job: C
steps:
- powershell: echo "Stage C"
Однако, если вы хотите установить условия на уровень задания. Вам нужно добавить еще одно задание на этапе deployment to ua
, чтобы преднамеренно завершить работу самого себя (так, чтобы этап был оценен как неудачный), когда условие ложно.
Надеюсь, что выше помогает!