Jenkins shell脚本不会收到作业参数的新值

时间:2016-01-29 13:30:08

标签: shell jenkins

我观察到奇怪的意外行为,并希望得到你的建议, 是否是Jenkins / Jenkins插件中的错误, 或者我错过了这一点,应该以不同的方式使用Jenkins。

我的任务:

我有一个带有可选设置字符串参数的自由式项目。

如果用户为此参数指定了值,则build应使用此值。如果用户没有指定值,则构建应计算一个值并使用它。

结果值应该用于其他几个构建步骤, 包括shell脚本和其他项目的触发构建。

我缩短的构建步骤列表是:

  1. 执行shell

    [ -n "$VERSION" ] && echo "VERSION=$VERSION" > new_env || echo "VERSION=12345" > new_env
    
  2. 注入环境变量,属性文件路径:new_env

  3. 执行shell

    foo "$VERSION"
    
  4. 使用预定义参数在其他项目上触发/调用构建:upstream_version=$VERSION

  5. 问题:

    现在,如果用户没有为VERSION指定值,

      步骤3中的
    • shell脚本收到一个空值(错误!好吧,至少对我意外)
    • upstream_version=12345(正确)
    • 调用的其他项目为基础

    感觉很奇怪 - 为什么触发的构建会收到新值而shell脚本不会?

    Jenkins版本是1.625.3。

1 个答案:

答案 0 :(得分:0)

您需要的是检查变量是否已定义且不为空的方法。 Bash已经内置了它。 (-z)

if [ -z "$VAR" ];

server fault question: How to determine if a bash variable is empty?

中有关的更多详情