【问题标题】:How to set the PATH environment variable in Jenkins configuration on Windows?如何在 Windows 上的 Jenkins 配置中设置 PATH 环境变量?
【发布时间】:2016-07-28 04:12:31
【问题描述】:

当我在 Windows Server 2008 上运行构建过程时,它会失败并显示如下错误消息

Cannot run program "foo": CreateProcess: error=2, 系统找不到指定的文件

我已经在 Ubuntu Server 上遇到了类似的问题,并通过将 Composer 全局安装的二进制文件的文件夹路径添加到 Jenkins 配置中的 PATH 变量 (Manage Jenkins -> Configure System -> Global properties -> Environment variables: name=PATH, value=$PATH:$COMPOSER_HOME/vendor/bin/) 来解决它:

(由于将COMPOSER_HOME 移出/root 目录的权限还需要转移到另一个可供Jenkins 访问的权限。)

现在我在 Windows 上尝试了同样的方法,但它不起作用。所以,也许我只是将PATH 设置错了。我试过的:

PATH
$PATH:D:\path\to\COMPOSER_HOME\vendor\bin

PATH
$PATH;D:\path\to\COMPOSER_HOME\vendor\bin

PATH
%PATH%D:\path\to\COMPOSER_HOME\vendor\bin

PATH
%PATH%;D:\path\to\COMPOSER_HOME\vendor\bin

如何在 Jenkins 配置中设置 PATH 环境变量在 Windows 上正确运行?

【问题讨论】:

  • 您尝试的最后一个应该可以工作。但是,困惑为什么要在这里添加jenkins bin?相反,您应该在启动 jenkins 的命令行上使用它。还要检查现有路径变量中是否有任何spaces。请检查this
  • 感谢您的评论!关于“Jenkins bin”的问题:默认情况下,Jenkins 根目录中没有 bin 文件夹。这个bin 只是我创建的一个自定义的,用于存储globally 安装的 Composer 包的二进制文件。
  • 刚刚使用%PATH%;D:\path\to\Jenkins\bin 再次尝试。它不起作用。并且路径中没有空格。
  • 可能你想在命令行上设置一下然后重启jenkins看看?
  • 刚刚检查过:将D:\path\to\Jenkins\bin; 添加到Path,注销并重新启动Jenkins。它没有帮助。

标签: windows jenkins configuration path environment-variables


【解决方案1】:

它必须是“路径”,而不是“路径”。

Jenkins 以区分大小写的方式对待这个特殊变量,只有“Path”被识别为路径变量。 “PATH”在 jenkins 看来就像一个通用环境变量,即使在 Windows 上也是如此。

【讨论】:

    【解决方案2】:

    我遇到的问题不是由错误的Path 配置引起的。 %PATH%;D:\path\to\COMPOSER_HOME\vendor\bin 是正确的。

    【讨论】:

    • 不应该是$Path in value box吗?无论如何,$Path 对我有用。
    • 是的,它应该是值框中的 $Path。否则旧路径将被清除
    【解决方案3】:

    不要对值字段中的 %PATH% 与 $PATH 混淆。虽然 %PATH% 是 windows 节点的正确语法,但您应该使用 /foo/bar:$PATH 在 unix 节点上扩展 PATH

    【讨论】:

      【解决方案4】:

      我有一个类似的要求来自定义具有 Windows Jenkins master 的 Windows slave 上的 Path 变量。我不想创建 Jenkins 全局环境变量,并且希望这个变量特定于特定的 Windows 节点/代理。

      这是我所做的:

      1) 在 Nodes -> WindowsNode -> Configure 屏幕中创建如下所示的环境变量:

      2) 断开我的 Jenkins 节点。

      3) 直接在slave上重启了我的Jenkins系统进程。

      4) 通过点击 Nodes -> WindowsNode -> System Information 对其进行测试,并看到分配给节点的新环境变量:

      5) 然后通过将以下命令添加到 Execute Windows Batch Command 构建步骤,在将在 Windows 从站/代理上运行的 Jenkins 作业中使用它:

      git --version

      【讨论】:

        【解决方案5】:

        如果您想为各自的工作在本地设置它,请在Build -> Execute batch Command 步骤中尝试:

        //append more variables separated by ; if required
        SET Path=%PATH%;C:\Program Files\Git\bin;
        
        //run your command here
        git --version
        

        这种方法适用于您想要执行的任何类型的命令。只需在本地将相应的环境变量添加到 Path 变量中即可。

        【讨论】:

          【解决方案6】:
          • 用于为 Slave 节点添加路径,例如 home env 变量。

          • 它可以是从 Slave nide 配置中完成的目录。

          • 打开任意从节点的配置设置,添加环境变量信息。

          • 例如设置 HOME 只需添加主目录的名称和位置。

          【讨论】:

            【解决方案7】:

            无法通过其他答案使其发挥作用。最终在我的从节点启动器(批处理)脚本中设置变量:

            SET PATH=C:\cygwin64\bin;%PATH%
            java -jar agent.jar -jnlpUrl ...
            

            【讨论】:

              【解决方案8】:

              如果在 Jenkins 中设置全局变量会损害特定于操作系统的代理或需要适应相同操作系统代理之间的差异,则在代理的系统变量中设置 Path 会有所帮助。

              reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0;..." /f
              
              net stop jenkins_agent
              
              net start jenkins_agent
              

              【讨论】:

                【解决方案9】:

                这解决了它:

                转到

                Jenkins -> Configure System -> Global properties -> Environment variables: name=Path, value=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/

                【讨论】:

                  猜你喜欢
                  • 2017-03-30
                  • 2015-01-15
                  • 2020-07-25
                  • 1970-01-01
                  • 2015-01-11
                  • 2011-02-14
                  • 2014-02-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多