我已根据上游${SHOW_OPTION}条件“是”或“否”有条件地设置Jenkins参数以读取USER_INPUT_VALUE。
if ("$SHOW_OPTION" == ("NO")) {
properties([ //No USER INPUT passed
])
else
{
properties([
parameters([ string(name: 'USER_INPUT_VALUE', defaultValue: 'mydefault']")
])
}
后来Jenikinsfile调用一个shell脚本作为ONE Liner,它分配一个shell变量,如下所示:当SHOW_OPTION为NO时,我分配硬编码值,否则分配实际的USER值,
if [ ${SHOW_OPTION} == "NO" ]; then TARGET='"NO_USER_VALUE"'; else TARGET=$USER_INPUT_VALUE; fi;
但当SHOW_OPTION为NO时,构建版本会报告为groovy.lang.MissingPropertyException: No such property: USER_INPUT_VALUE for class: groovy.lang.Binding
为什么脚本在这里验证其他部分,因为它不适用。有没有办法跳过shell脚本中的验证。
注:当我在常规shell上运行一个liner时,我没有看到任何问题(使用echo $?验证)
1条答案
按热度按时间2lpgd9681#
声明性管道
#!/bin/bash
启动bash脚本SHOW_OPTION为“是”时的结果:
SHOW_OPTION为“否”时的结果:
注意:应手动删除参数,因为当SHOW_OPTION=YES时,参数已添加到管道中。因此,我建议不要在管道中配置动态参数。您可以使用标准方式添加参数并比较其值是否为空
脚本化管道
如果有人正在使用脚本化管道,则可以按预期工作: