我的管道中有一个阶段需要等待前两个阶段中的任何一个成功结束,这两个阶段是相互排斥的。我可以在 dependsOn
属性中使用多个阶段,但依赖阶段将取决于所有引用阶段的成功结束,而不是其中任何一个阶段。
答案 0 :(得分:0)
你可以这样尝试:
stages:
- stage: A
. . .
- stage: B
. . .
- stage: C
dependsOn:
- A
- B
condition: or(succeeded('A'), succeeded('B'))
通过这种方式,stage C
只会在 stage A
和 stage B
完成后运行其中任何一个都是succeeded
。
要查看更多详细信息,您可以查看:
[更新]
对于您的第一个问题:
<块引用>有了你的解决方案,如果 A 阶段或 B 阶段没有完成,C 阶段会运行吗?
当然。只要阶段 A 和阶段 B 中的一个成功完成,阶段 C 就会运行。
对于你的第二个问题:
<块引用>如何标记另一个阶段,以便在阶段 C 完成后整个管道看起来已经完成。
您提到 A 阶段和 B 阶段是相互排斥的。因此,如果执行阶段 A,则不应执行阶段 B。反之亦然。因此未执行的阶段应标记为Skipped
。
参见下面的管道示例:
parameters:
- name: stage
displayName: 'Select stage A or B'
type: string
default: A
values:
- A
- B
stages:
- stage: A
displayName: 'Stage A'
condition: eq('${{ parameters.stage }}', 'A')
. . .
- stage: B
displayName: 'Stage B'
condition: eq('${{ parameters.stage }}', 'B')
. . .
- stage: C
displayName: 'Stage C'
dependsOn:
- A
- B
condition: or(succeeded('A'), succeeded('B'))
. . .