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

Jenkins shell脚本不接收作业参数的新值,shell,jenkins,Shell,Jenkins,我观察到奇怪的意外行为,希望得到你的建议, 不管是Jenkins/Jenkins插件中的bug, 或者我没有抓住要点,应该用不同的方式使用詹金斯 我的任务: 我有一个自由泳项目,有一个可选的字符串参数 如果用户指定此参数的值,则生成应使用此值。如果用户没有指定一个值,构建应该计算一个值并使用它 结果值应在其他几个构建步骤中使用, 包括shell脚本和在其他项目上触发的构建 我拥有的构建步骤的简短列表如下: 执行shell [ -n "$VERSION" ] && echo "VE

我观察到奇怪的意外行为,希望得到你的建议, 不管是Jenkins/Jenkins插件中的bug, 或者我没有抓住要点,应该用不同的方式使用詹金斯

我的任务:

我有一个自由泳项目,有一个可选的字符串参数

如果用户指定此参数的值,则生成应使用此值。如果用户没有指定一个值,构建应该计算一个值并使用它

结果值应在其他几个构建步骤中使用, 包括shell脚本和在其他项目上触发的构建

我拥有的构建步骤的简短列表如下:

  • 执行shell

    [ -n "$VERSION" ] && echo "VERSION=$VERSION" > new_env || echo "VERSION=12345" > new_env
    
    foo "$VERSION"
    
  • 注入环境变量、属性文件路径:
    new\u env

  • 执行shell

    [ -n "$VERSION" ] && echo "VERSION=$VERSION" > new_env || echo "VERSION=12345" > new_env
    
    foo "$VERSION"
    
  • 触发器/调用使用预定义参数在其他项目上生成:
    upstream\u version=$version

  • 问题:

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

    • 第3步的shell脚本接收到一个空值(错误!好吧,至少我没有料到)
    • 基于其他名为上游版本=12345的项目构建(正确)
    感觉很奇怪-为什么触发的构建收到新值而shell脚本没有


    Jenkins版本是1.625.3。

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

    有关详情,请参阅