无法更改Jenkins字符串参数变量

时间:2014-02-24 15:25:51

标签: jenkins hudson

我有Jenkins字符串参数$ {EMAIL_ID},用户可以输入他们的电子邮件ID。 (说他们输入了myid@gmai.com

但是在流程的中间我想将其更改为我在配置中指定的某个值,如Execute Shell中所示。

EMAIL_ID='example@ex.com'
echo $EMAIL_ID
--returns example@ex.com

如果我在下一个Execute Shell中使用此变量 它返回myid@gmai.com

我需要打印example@ex.com

3 个答案:

答案 0 :(得分:9)

每个“执行Shell ”或任何其他构建步骤都会启动一个新的独立环境。此新环境继承了实际环境变量的副本以及为作业定义的所有构建参数,但意识到它们是副本/继承

您可以轻松更改环境变量的值:

  • param = new_value(在Unix中)
  • set param = new_value(在Windows中)

但是,该更改将本地更改为“执行shell”步骤的实例。如果在同一个“执行shell”步骤中回显该变量,则可以看到更改,但在下一个“执行shell”中,您将获得一个新副本(具有原始值)。

要在构建步骤之间(或者在作业之间)保留更改的变量,您需要在第一步中保存它,并在下一步中加载它。最简单的方法是将值输出到文件:
echo param=$param > temp.props
然后使用EnvInject plugin将此文件读入第二个“执行shell”步骤(注意,您需要在现有的两个“执行shell”步骤之间配置 EnvInject 构建步骤。

答案 1 :(得分:0)

您应该在批处理脚本中访问这样的Jenkins环境变量:%EMAIL_ID%

答案 2 :(得分:0)

我不同意斯拉夫。

它也可以切换变量w.o.插入。 只是做:

echo set ENV_VAR=%ENV_VAR%>env_vars.bat

然后将其加载到其他批处理脚本中:

call env_var.bat