Jenkins 条件步骤令牌逻辑运算符

Jenkins conditional steps token logic operators

我从包含以下内容的文件 myprop.property 中注入环境变量:

var1=y
var2=y

构建步骤:
1、注入环境变量:

Property File Path:${JENKINS_HOME}/myprop.propertie


  1. 执行Windows批处理命令(验证变量注入成功)

echo var1 = %var1%
echo var2 = %var2%

  1. 条件步骤(多个)

Run?: Boolean condition
Token: ${ENV,var="var1"}||${ENV,var="var2"}
Steps to run if condition is met: echo Yes, works!

运行 构建,步骤 3 中的条件从未满足,而步骤 2 显示变量的正确值。 我试过条件和运算符:

var1=y, var2=y: ${ENV,var="var1"}||${ENV,var="var2"}
var1=y, var2=y: ${ENV,var="var1"}|${ENV,var="var2"}

var1=y, var2=n: ${ENV,var="var1"}||${ENV,var="var2"}
var1=y, var2=n: ${ENV,var="var1"}|${ENV,var="var2"}

值的大写或小写没有任何区别。我是 运行 jenkins 1.641 windows 7 pro.
如果我只使用一个,例如${ENV,var="var1"} 在令牌字段中,它按预期工作。

有效,将第 3 步更改为:

Run?: Or
Boolean condition
Token: ${ENV,var="var1"}
Or
Boolean condition
Token: ${ENV,var="var2"}
Never

这其实就是三个条件。执行首先断言第一个条件,如果满足,停止检查;如果不满足,断言第二个;依此类推,直到最后一个条件 Never,这意味着如果不满足任何条件,则停止执行该步骤。

试试这个,它对我有用,我们需要提到图像中提到的带有标记的布尔条件。

我发现我的 post 吸引了很多人的兴趣。这是我最终解决的问题。

使用正则表达式匹配似乎比使用布尔条件.

更具可读性

如果逻辑是“OR”,

? = Regular expression match
expression = ${ENV,var="var1"}|${ENV,var="var2"}
Label = Y

请注意,逻辑运算符是单个'|'不是双'||'

如果逻辑是 "AND",

? = Regular expression match
expression = ${ENV,var="var1"}${ENV,var="var2"}
Label = YY

expression只是两个变量的串联,Label也是如此。