【问题标题】:Jenkins Slave Environment Variable RefreshJenkins 从属环境变量刷新
【发布时间】:2012-01-21 08:45:28
【问题描述】:

我有一个具有JAVA_HOME 环境变量的 Jenkins Slave(一台 Windows PC)。我更新了 Slave 上的 Java 版本,所以我也更新了环境变量。

当我通过 Jenkins Web 界面查看这个 Slave 的系统属性时,JAVA_HOME 属性被报告为旧的。

在 Windows PC 上运行 echo %PATH% 会显示正确的值。 在从站的 Jenkins 节点脚本控制台上运行 println System.getenv("PATH") 会显示旧的 JAVA_HOME 值。

我已尝试再次删除和添加 Slave 并重新启动 Jenkins 服务器。仍然没有更新旧值。

有什么想法吗?

【问题讨论】:

    标签: jenkins hudson environment-variables java-home


    【解决方案1】:

    无需重启。

    管理 Jenkins -> 管理节点和云 单击所需的从站。然后从面板中选择“断开连接”。

    Slave 将自动重新连接。如果没有,请点击“启动”。

    这将刷新环境变量,包括“PATH”。

    【讨论】:

      【解决方案2】:

      你可以更新你的 Jenkins 版本,它会解决它。否则这对我有用(Jenkins 1.6,构建/测试节点:MacOSX Mojave):

      首先使用以下命令在您的构建/测试节点中安装 java 8:

      brew update
      brew cask install caskroom/versions/java8
      

      然后在 Jenkins web 面板中点击你的构建/测试节点,然后点击 Configure 然后点击 Advanced... 按钮,这将显示多个文本字段。然后在 JavaPath 字段中添加您的 java 8 的路径。

      对我来说这条路是这样的:

      /Library/Java/JavaVirtualMachines/jdk1.8.X_XXX.jdk/Contents/Home/bin/java

      注意:记得将 X_XXX 替换为您之前的 java 8 版本。

      然后保存

      然后断开构建/测试节点并再次连接。这应该可以解决问题。

      Source

      【讨论】:

        【解决方案3】:

        这是 Jenkins 中的一个错误:https://issues.jenkins-ci.org/browse/JENKINS-27739

        3种解决方法(我都亲自确认过):

        1. 将 Jenkins 更新到 >=1.617(推荐)
        2. 重启 Jenkins master
        3. 删除 Jenkins slave,然后重新添加

        【讨论】:

        • 感谢您向我们指出错误报告。更新到 >=1.617 解决了这个问题
        • 有没有办法使用 Jenkins Rest/API 在 slave 的配置中添加/更新 ENV 变量?
        • 你不需要完全删除slave!只需重新启动从代理就足够了。
        • 同意@JohnBjareholt,很明显服务器正在缓存slave建立的环境,即使环境是由远程机器上slave的启动脚本加载的(没有更改服务器配置奴隶)。重新启动奴隶并没有为我解决这个问题。有趣的是,服务器重启会重新加载这些环境设置(甚至是从服务器的启动脚本中声明的那些)。
        【解决方案4】:

        重启slave,这解决了我的配置问题。

        【讨论】:

          【解决方案5】:

          Hudson/Jenkins 不使用从属环境变量,因为它支持多个 java 版本,因此您可以在 GUI 中配置 java home 环境变量。

          您需要做的是转到 Manage Hudson/Jenkins,然后选择 Manage Nodes。从列表中选择要配置的节点,然后选择配置。在底部有一个节点属性部分。选中工具位置复选框。单击添加,然后在下拉列表中选择您的 JDK 并添加新路径。

          【讨论】:

          • 添加到节点的路径而不是从属的环境就可以了,谢谢。
          • 问题仍未得到解答。我需要我的奴隶以某种方式“即时”更新 PATH 变量。
          • @AlexOkrushko 您是否找到了一种自动更新从属配置的方法,专门用于添加/更新 ENV 变量?
          • @ArunSangal 这是很久以前的事了,但我想我已经做了类似的事情,如下面的答案所述。
          • @AlexOkrushko - 使用 Jenkins REST/API 是可能的,我取得了一些成功,我将分享我的发现。就我而言,我正在使用 Ansible + Jenkins Swarm Plugin 创建从站(但它不会创建 ENV 变量)。我打算使用第一部分创建从属,然后调用第二个 Jenkins 作业(它将配置新创建的从属以嵌入/添加/更新任何 ENV 变量)。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 2015-08-28
          • 2018-05-15
          • 2017-08-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多