如何在 Windows 上的 Jenkins 配置中设置 PATH 环境变量?

How to set the PATH environment variable in Jenkins configuration on Windows?

当我在 Windows Server 2008 上 运行 我的构建过程时,它失败并显示类似

的错误消息

Cannot run program "foo": CreateProcess: error=2, The system cannot find the file specified

我已经在 Ubuntu 服务器上遇到了类似的问题,并通过将 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?

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

需要"Path",而不是"PATH"。

Jenkins 以区分大小写的方式处理这个特殊变量,只有 "Path" 被识别为路径变量。 "PATH" 在 jenkins 看来就像一个通用环境变量,即使在 Windows.

上也是如此

我有一个类似的要求,要在 Windows slave 和 Windows Jenkins master 上自定义 Path 变量。我不想创建 Jenkins 全局环境变量,并希望此变量特定于特定 windows node/agent.

这是我所做的:

1) 创建了一个环境变量,如下所示 Nodes -> WindowsNode -> Configure 屏幕:

2) 断开了我的 Jenkins 节点。

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

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

5) 然后在 Jenkins 作业中使用它,通过将以下命令添加到 Execute Windows Windows slave/agent 上 运行批处理命令 构建步骤:

git --版本

  • 用于为从节点添加路径,如 home env 变量。

  • 它可以是从节点配置中完成的目录。

  • 打开任何从节点的配置设置,添加env vaiable信息。

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

如果您想在本地为相应的作业设置它,请在 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变量中添加各自的环境变量即可。

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

上扩展 PATH

无法通过其他答案使其正常工作。结束在我的从属节点启动器(批处理)脚本中设置变量:

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

如果在 Jenkins 中设置全局变量会伤害 OS 特定代理或需要适应相同 OS 代理之间的差异,则在代理的系统变量中设置 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

这解决了它:

前往

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

补充一下,因为我们遇到了类似的问题并在此处寻找答案。

在我们的案例中,全局环境变量集不起作用,但在节点配置上以完全相同的方式定义它。我们的问题是关于管道项目。无论哪种方式,Maven 项目都运行良好。请参阅定义的屏幕截图。

如果此定义在全局中,则在脚本管道中 $path 不会扩展到生成服务器上的当前路径。它只是保持恒定值 $path。如果相同的定义在节点配置 $path 上按预期展开。