【问题标题】:Jenkins conditional steps token logic operatorsJenkins 条件步骤令牌逻辑运算符
【发布时间】:2018-05-10 05:37:32
【问题描述】:

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

var1=y
var2=y

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

属性文件路径:${JENKINS_HOME}/myprop.propertie


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

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

  1. 条件步骤(多个)

运行?:布尔条件
令牌:${ENV,var="var1"}||${ENV,var="var2"}
满足条件时运行的步骤:echo 是的,工作!

运行构建,步骤 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"}

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

【问题讨论】:

    标签: jenkins conditional boolean-operations


    【解决方案1】:

    试试这个,它对我有用,我们需要在图片中提到带有 Token 的布尔条件。

    【讨论】:

    • 您能否在答案中发布表单输入字段以允许复制和粘贴,并解释为什么这可能是一个好的解决方案?
    【解决方案2】:

    这可行,将步骤 3 更改为:

    跑?:或者
    布尔条件
    代币:${ENV,var="var1"}
    或者
    布尔条件
    令牌:${ENV,var="var2"}
    从不

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

    【讨论】:

      【解决方案3】:

      我看到我的帖子引起了很多人的兴趣。以下是我最终解决的问题。

      使用正则表达式匹配似乎比使用布尔条件更具可读性。

      如果逻辑是“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 也是如此。

      【讨论】: