Q1:我在ADO管道中有一个任务,在步骤中有4-5个任务.我希望基于几个条件触发这些任务,所以我使用了ADO表达式。但是现在,当taskB失败时,我想跳过taskA。默认情况下应该会发生这种情况,但似乎我的任务条件正在覆盖连续错误:false。
你能建议一下怎么做吗?尝试替代解决办法:多作业管道安装,一个任务中的一个任务&它对我们很好,但我们想知道如何在一个任务中设置多个任务?
Q2 :即使我可以使用REST和set变量概念作为变量获得taskA状态,我如何在task.something中添加多个条件,如“variable1=succeeded & variable2 = p1或variable3 = p2”
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops
样本yaml
parameters:
variables:
trigger:
steps:
task: A
continueonerror:false
condition: or(eq(v1, p3), eq(v2, 3), eq(v4, 5))
task: B
continueonerror:false
condition: or(eq(v1, p1), eq(v2, 6))
task: C
continueonerror:false
condition: or(eq(v1, p2), eq(v2, 8))发布于 2022-12-01 03:04:11
根据您对跳过TaskB (如果TaskA失败)的期望,您可以考虑在TaskB中添加succeeded()作为条件的一部分,以及其他评估。请拿下面的YAML样本作为参考。
trigger: none
parameters:
- name: p1
default: 1
- name: p2
default: 2
- name: p3
default: 3
variables:
v1: 2
v2: 6
v3: 2
v4: 5
steps:
- script: |
echo A
echo "##vso[task.logissue type=error]Simulate task failure."
exit 1
name: TaskA
# continueOnError: true
condition: or(eq(variables['v1'], ${{ parameters.p3 }}), eq(variables['v2'], 3), eq(variables['v4'], 5))
- script: echo B
name: TaskB
condition: and(succeeded(), or(eq(variables['v1'], ${{ parameters.p1 }}), eq(variables['v2'], 6)))
- script: echo C
name: TaskC
condition: and(succeededOrFailed(), or(eq(variables['v1'], ${{ parameters.p2 }}), eq(${{ parameters.p2 }}, 8)))当TaskA失败时,succeeded()用于TaskB的条件评估将是False;因此跳过TaskB。
TaskC在其条件下使用succeededOrFailed(),并且将继续运行,即使以前的依赖项失败了,除非运行被取消。
请参阅有关指定条件的更多信息。

https://stackoverflow.com/questions/74631068
复制相似问题