我观察到奇怪的意外行为,并希望得到你的建议, 是否是Jenkins / Jenkins插件中的错误, 或者我错过了这一点,应该以不同的方式使用Jenkins。
我的任务:
我有一个带有可选设置字符串参数的自由式项目。
如果用户为此参数指定了值,则build应使用此值。如果用户没有指定值,则构建应计算一个值并使用它。
结果值应该用于其他几个构建步骤, 包括shell脚本和其他项目的触发构建。
我缩短的构建步骤列表是:
执行shell
[ -n "$VERSION" ] && echo "VERSION=$VERSION" > new_env || echo "VERSION=12345" > new_env
注入环境变量,属性文件路径:new_env
执行shell
foo "$VERSION"
使用预定义参数在其他项目上触发/调用构建:upstream_version=$VERSION
问题:
现在,如果用户没有为VERSION
指定值,
upstream_version=12345
(正确)感觉很奇怪 - 为什么触发的构建会收到新值而shell脚本不会?
Jenkins版本是1.625.3。
答案 0 :(得分:0)
您需要的是检查变量是否已定义且不为空的方法。 Bash已经内置了它。 (-z)
if [ -z "$VAR" ];
server fault question: How to determine if a bash variable is empty?
中有关的更多详情