1

我正在尝试在 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

在我看到的作业的詹金斯控制台输出中:

+ '[' -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 插件。我打算在这个练习后沮丧地完成这个练习,但我认为无论如何这都是一个很好的问题,因为我认为这可能只是猛烈抨击。

有谁知道这到底是怎么回事?

4

1 回答 1

0

只是在黑暗中拍摄,但是在使用变量时,您是否尝试过用{}like in包围变量${VAR_ONE}

关于双加我也可以猜到。我会说这是因为来自加载到当前 shell 的配置文件的变量声明......但这真的只是我的猜测。

希望这会有所帮助。

于 2013-08-29T09:20:08.490 回答