【问题标题】:Can not change Jenkins String Parameter Variable无法更改 Jenkins 字符串参数变量
【发布时间】:2014-02-24 15:25:50
【问题描述】:

我有 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

【问题讨论】:

    标签: jenkins hudson


    【解决方案1】:

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

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

    • param=new_value(在 Unix 中)
    • 设置 param=new_value(在 Windows 中)

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

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

    【讨论】:

    • 我正在做类似的事情。我将数据存储到数据库中,然后在需要时调用它。
    【解决方案2】:

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

    【讨论】:

    • 你的意思是这会替换字符串参数吗? %EMAIL_ID%='example@ex.com'
    • 我的理解是,在 Windows 批处理文件中,%EMAIL_ID%='example@ex.com' 应该可以工作。
    • 我试过在Windows批处理文件执行;它失败了$ cmd /c call /tmp/hudson68740159.bat 21:36:39 FATAL: command execution failed
    • Windows 语法为set param=value%param% 用于检索/读取变量。
    【解决方案3】:

    我不同意斯拉夫。

    也可以切换变量 w.o.插入。 就这样吧:

    echo set ENV_VAR=%ENV_VAR%>env_vars.bat
    

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

    call env_var.bat
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多