首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当任务A失败时跳过taskB taskC,即使满足taskB和taskC的条件

当任务A失败时跳过taskB taskC,即使满足taskB和taskC的条件
EN

Stack Overflow用户
提问于 2022-11-30 16:26:33
回答 1查看 34关注 0票数 0

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

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

发布于 2022-12-01 03:04:11

根据您对跳过TaskB (如果TaskA失败)的期望,您可以考虑在TaskB中添加succeeded()作为条件的一部分,以及其他评估。请拿下面的YAML样本作为参考。

代码语言:javascript
复制
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(),并且将继续运行,即使以前的依赖项失败了,除非运行被取消。

请参阅有关指定条件的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74631068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档