【问题标题】:Java not finding environment variables defined in JenkinsJava找不到Jenkins中定义的环境变量
【发布时间】:2016-10-27 08:51:59
【问题描述】:

我有一段获取环境变量的代码,如下所示:System.getenv("MY_VAL")

在我的 Windows 机器上本地运行良好。

但是,在我运行 CentOS 的 Jenkins CI 服务器上,我遇到了一些问题

我尝试通过 envinject 插件和全局 jenkins 设置设置 MY_VAL 的值

如果我执行预构建步骤来回显值,它可以正常工作,但是在我的 java 代码中,这没有得到解决。

我该如何解决这个问题?

【问题讨论】:

  • 我认为这可能是因为 java 程序正在创建自己的新终端,该终端会清除所有环境变量。

标签: java linux jenkins centos environment-variables


【解决方案1】:

您可以通过安装EnvInject 插件来实现。

1) 安装后,检查作业配置屏幕中的为作业准备环境选项。此选项将显示几个字段供您填写。

更新

2) 使用命令touch env.properties 填充脚本内容 区域以创建文件。

3) 通过这样做,在 Properties Contentt 字段中填写您要注入到您最近创建的 env.properties 文件中的变量。每行放置一个变量,例如:

     VARIABLE1=value
     VARIABLE2=value

4) 在文件路径区引用刚刚创建的env.properties文件。

5) 在运行时,Jenkins 将注入这些变量,它们将可供您的程序使用。

【讨论】:

  • 我尝试将 MY_VAL=/my/path 放在 Properties Content 字段中,并将 ${WORKSPACE}/envInject.properties 放在 Properties 文件路径中,但它没有运行,因为它说属性文件不存在.它不会创建一个吗?
  • 如果没有,只是从文件中读取,文件是否只需要为空?
  • @mangusbrother 不确定问题出在哪里,但尝试使用 $JENKINS_HOME 而不是 $WORKSPACE...工作取消选中准备环境作业选项并添加一个名为注入变量或注入环境变量的新构建步骤......不记得确切的标签......然后做同样的事情声明这些变量.. .你不需要填写所有字段...只是属性内容和路径...记得在Java程序执行之前放置它。
  • 插件应该创建属性文件...它只是一种辅助方法,将这些参数保存在文件中以解决在每一步之前注入它自己的环境变量的 Jenkins 功能... Jenkins 的例子变量? $WORKSPACE, $BUILD_NUMBER
  • 如果我只设置一个属性文件的随机名称,它会说它不存在@rogério-peixoto
【解决方案2】:

您需要将此变量注入 property.file,然后从属性文件中访问它。例如在执行 shell 中,您可以定义“echo MY_VAL=default > property.file”。稍后在后续作业中,您可以使用“Jenkins Parameterized Trigger plugin”通过,您可以选择从属性文件访问参数。

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2013-04-17
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多