【问题标题】:Take value of a variable from Jenkins before build and update it in config.properties在构建之前从 Jenkins 获取变量的值并在 config.properties 中更新它
【发布时间】:2015-03-26 02:15:36
【问题描述】:

我的要求是我有一个 Jenkins 作业,它是参数化的,并询问我的脚本需要在其中运行的环境变量值。在给出值时,jenkin 应该获取该值并在 config.properties 文件中更新它。

config.properties 文件:

ENVIRONMENT = ${env}

在 Jenkins 中,我将全局参数定义为:

全局变量字符串参数

名称:环境

默认值:SIT1

(由于声誉低,无法发布图片)

所以,当我点击立即构建时,它会询问变量 env 的值,然后开始执行。但是,它会抛出错误,因为 config.properties 中的环境变量无法识别构建之前提供的值。

P.S- 我已经安装了 EnvInject 插件,如果有帮助,请指导我如何使用它。如果我的问题看起来令人困惑,请提出我可以提供的要点以使其变得简单。

【问题讨论】:

  • 所以,如果我理解正确,您不能将您在 Jenkins 中设置的环境变量传递给您的脚本。您在全局参数中设置了它,但不能将其传递给脚本,对吗?
  • 我对 Jenkins 还很陌生,所以我不能说它是否可能。但是,我的要求与您所说的相同。我希望将 Jenkins 中的环境变量值传递给我的脚本(config.properties)。如果不可能,请建议我任何其他选择。

标签: jenkins build continuous-integration environment-variables jenkins-plugins


【解决方案1】:

所以,我不确定您是否真的可以将环境变量“注入”到脚本中。前段时间我为 Jenkins 写了一个插件,它必须处理一些 perl 脚本,当时真的很难处理环境变量。

关于 EnvInject 插件我几乎不能说什么,我从来没有使用过。例如,您可以尝试使用“build-action”选项来运行 shell 或批处理命令。您可以设置环境变量: 批量set VARIABLE=valueexport VARIABLE=value 用于外壳。然后,在您的脚本中,您可以非常容易地获取变量的值。

这是将一些变量传递给脚本的简单安全的方法。

我真的不确定,自从我没有接触 Jenkins 以来已经快 3 个月了,如果这些全局属性不是真的用于将它们传递给脚本的话。您的脚本在您的 PC 上运行,因此,如果它将使用环境变量,则必须设置这些变量。要传递您在 Jenkins 中设置的变量,它需要在您的机器上设置/导出它们,我不确定该插件是否已实现。

告诉我它是否有效,我会尽力找到解决方案!保持联系!

【讨论】:

  • 非常感谢!!我已经使用了您的想法,并且我在 Jenkins -DargLine="-Denv=$Environment" 的“构建”菜单下的“JVM 选项”中使用以下命令,其中 $Environment 值由用户在构建之前询问。在我的脚本中,我通过命令 'ENV=System.getProperty("env");' 获取这个值。再次感谢你给我指路:)
猜你喜欢
  • 2021-04-26
  • 2013-12-28
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
相关资源
最近更新 更多