Azure DevOps多个自定义条件

4

我在Azure DevOps中有两个变量

Var1= A,B,C
Var2= 1,2

我需要按照以下条件运行一个任务:

Var1=A,B,C & Var2=1,2

Var1=A & Var2=1

官方文档中,我只能看到更简单的自定义条件。

例如:

and(succeeded(), in(variables['Var1'], 'A','B','C'))

以下是使用“和”条件再次包含Var2的方法,更像多个自定义条件

在简单的C#世界中,我们将写成以下形式。

(Var1==A || Var1==B || Var1==C) && (Var2==1 || Var2==2)

更新

我的最终条件如下所示

( ((Var1==A || Var1==B || Var1==C) && (Var2==2)) || ((Var1==A) &&(Var2==1))) 

我该如何在自定义条件中实现这个功能?
3个回答

15

Azure DevOps多个自定义条件

看起来你想要使用矩阵变量,它就像每个变量一样,可以用以下方式使用:

and(succeeded(), in(variables['Var1'], 'A','B','C'), in(variables['Var2'], '1','2'))

用逗号分隔变量条件,在我的这边可以正常工作。

希望这能帮到你。


谢谢您的回答,我已经更新了我的问题并提供了更清晰的内容。实际上,除了您的答案之外,我还想将另一个条件与“and”组合起来,我该怎么做? - Jayendran
1
抱歉,我之前的逻辑出了问题。现在我已经在问题的更新中正确地更新了逻辑。你能看一下吗?现在你可以看到我所说的使用“and”和“or”组合多个条件的意思了。 - Jayendran
1
感谢您的澄清,在接受答案之前再加一分。还有一个问题,如果我将 AND 更改为 OR,那么是否可以实现?像这样:(((Var1==A || Var1==B || Var1==C) || (Var2==2)) || ((Var1==A) &&(Var2==1))) - Jayendran
1
@Jayendran,答案是肯定的。您可以在管道中添加两个相同的任务,一个带有条件((Var1==A || Var1==B || Var1==C) && (Var2==2)),另一个带有条件((Var1==A) &&(Var2==1)),这应该可以工作。 - Leo Liu
1
@Jayendran,确实,你是对的!就像我之前说的一样,我们目前无法实现多个矩阵变量的组合。 - Leo Liu
显示剩余3条评论

1

我刚刚解决了需要多个条件满足的问题,通过让变量解析为一个单一的变量以在任务条件中使用。

variables:
  isMaster: $[eq(variables.branchName, 'master')]
  isStaging: $[eq(variables.branchName, 'staging')]
  willDelete: $[and(eq(variables.isMaster, 'false'), eq(variables.isStaging, 'false'))]

....

  - task: HelmDeploy@0
    displayName: Remove instance
    condition: eq(variables.willDelete,'true')

这是我第一次尝试将所有内容放入任务条件中。

and(not(variables.isMaster, true), not(variables.isStaging, true))

失败了,当我查看调试时发现它并没有完全展开。

Evaluating: and(eq(variables['isMaster'], 'true'), eq(variables['isStaging'], 'true'))
Expanded: and(eq('False', 'true'), eq(variables['isStaging'], 'true'))
Result: False

0
我已为经典的AzureDevops构建流程要求添加了自定义条件:如果分支是主分支或release/*分支,构建应该创建一个构件。 下面是自定义条件and(succeeded(),or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接