我如何执行一项可能有条件无法执行的工作?

问题描述

我有一个包含多个集成测试集的管道,但是我真的不想在PR构建过程中运行所有测试集。为此,我有一个在主分支上设置的变量

gcc-10 -m64  -fPIC -pipe -bundle -undefined dynamic_lookup -o qml.so const.o alloc.o util.o opt.o libm.o cephes.o lapack.o conmin.o conmax.o nlopt.o \
        ../lib/libprob.a ../lib/libconmax.a ../lib/libnlopt.a \
         \
        -llapack -lblas \
        -lgfortran \
        -lm \
        -exported_symbols_list qml.symlist
duplicate symbol _call in:
    conmin.o
    conmax.o
duplicate symbol _call in:
    conmin.o
    nlopt.o
ld: 2 duplicate symbols for architecture x86_64
collect2: error: ld returned 1 exit status

我有一个我想运行的声纳质量检查工作

  - job: it
    displayName: Integration Test
    timeoutInMinutes: 360
    steps: []

  - job: it_billing
    displayName: Integration Test
    condition: or(eq(variables.isMasterBranch,'True'),eq(variables['it'],'true'))
    steps: []

  - job: it_rest
    displayName: Integration Test
    condition: or(eq(variables.isMasterBranch,'true'))
    steps: []

没有条件,但是它确实取决于it_billing和it_rest,因为在主构建中,它将收集所有IT覆盖结果并生成报告。

但是,在PR构建中,它可能由于 - job: qa displayName: SonarQube Analysis dependsOn: - it - it_billing - it_rest 而跳过了该阶段,是否有一种方法可以执行此操作,而无需诉诸复制特定于PR构建的特定分析阶段?

dependsOn

解决方法

对不起,它无法执行此操作。

默认情况下,如果某个作业不依赖于任何其他作业,则运行;如果 它所依赖的所有工作都已经完成并成功

您可以在这里在我们的官方文档中引用它-Specify conditions

换句话说,当您运行PR构建时,由于job: qajob: it_billing没有运行,因此job: it_rest将不会运行。

,

是否有一种方法可以执行此操作而无需复制分析 阶段有一些公关活动?

您的dependsOn:可能会更“动态”:

- job: qa
    displayName: SonarQube Analysis
    dependsOn:    
    - it
    - ${{ if ne(variables['Build.SourceBranchName'],'master') }}:
      - it_billing
      - it_rest

if表达式检查当前分支,并且它是否与master不同,它包含两个剩余的依赖关系: it_billing it_rest 。否则,只能预期一个依赖项。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...