我正在尝试在jenkins中设置一个构建,该构建在shell构建步骤中读取在先前构建期间生成的配置文件(如果存在)。但是,我在配置文件中定义的变量似乎没有被放入当前shell的环境中,我无法弄清楚原因。
第一个构建步骤将从上游项目中提取配置文件。
配置文件只有简单的变量defs:
VAR_ONE=foo
VAR_TWO=bar
#etc...
第二个构建步骤是shell,如下所示:
if [ -f $WORKSPACE/build_config ];
then
source $WORKSPACE/build_config
echo $VAR_ONE
echo $VAR_TWO
fi
在作业的jenkins控制台输出中,我看到:
+ '[' -f /var/lib/hudson-slave/workspace/build_config ']'
+ source /var/lib/hudson-slave/workspace/build_config
++ VAR_ONE=foo
++ VAR_TWO=bar
+ echo
+ echo
我不知道双加意味着什么,也许它被导出到不同的范围?如果是,为什么?
我还没有真正研究过EnvInject或EnvFile插件。我计划在这次演习之后感到沮丧,但我认为无论如何这都是一个很好的问题,因为我认为这可能只是抨击。
任何人都知道到底发生了什么事?
答案 0 :(得分:0)
只是在黑暗中拍摄,但您是否尝试使用{}
时使用${VAR_ONE}
包围变量?
关于双加我也可以猜。我会说这是因为来自配置文件的变量声明被加载到当前的shell中......但这只是我的猜测。
希望这会有所帮助。