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

29

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

 

无法运行程序“foo”: CreateProcess: error=2, 系统找不到指定的文件

我之前在Ubuntu Server上遇到了类似的问题,并通过将全局安装Composer生成的二进制文件所在文件夹的路径添加到Jenkins配置的PATH变量中解决了该问题 (管理Jenkins -> 配置系统 -> 全局属性 -> 环境变量:名称=PATH,值=$PATH:$COMPOSER_HOME/vendor/bin/):

enter image description here

(由于权限问题,还需要将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

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


你尝试的最后一个应该可以工作。但是,我不明白为什么你想在这里添加Jenkins bin?相反,你应该在启动Jenkins本身的命令行中设置它。还要检查现有路径变量中是否有任何“空格”。请参考此链接 - Rao
刚刚又尝试了一下 %PATH%;D:\path\to\Jenkins\bin,但是还是不行。路径中也没有空格。 - automatix
也许你想在命令行上设置它,然后重新启动Jenkins并查看? - Rao
刚刚检查了一下:将 D:\path\to\Jenkins\bin; 添加到 Path 中,注销并重新启动 Jenkins。但是没有帮助。 - automatix
请查看这个问答中的评论,它可能会回答你的问题。 - Dominik Gebhart
显示剩余3条评论
12个回答

26

必须使用"path"而不是"PATH"。

Jenkins对这个特殊变量进行大小写敏感的处理,只有"path"被识别为路径变量。即使在Windows上,"PATH"看起来也像是一个通用的环境变量。


这仅适用于自由项目,而不是流水线项目。 - undefined

22

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

输入图片描述


6
不应该是价值框中的 $Path 吗?不管怎样,$Path 对我有效。 - Adithya Ranganath
3
是的,在值框中应该是$Path。否则,旧路径将被清除。 - user8728340
$Path应该在值框中,否则旧的值将被清除。 - nityanarayan44

5
不要对值字段中的%PATH%和$PATH感到困惑。虽然%PATH%是Windows节点的正确语法,但您应该使用/foo/bar:$PATH来扩展Unix节点上的PATH。

3

如果您想在本地设置相应的作业,请尝试在构建 -> 执行批处理命令步骤中执行以下操作:

//append more variables separated by ; if required
SET Path=%PATH%;C:\Program Files\Git\bin;

//run your command here
git --version

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


2
我有一个类似的需求,需要在Windows Jenkins主服务器上的Windows从服务器上自定义Path变量。我不想创建Jenkins全局环境变量,并且希望此变量特定于某个Windows节点/代理。
这是我所做的:
1)在“节点-> WindowsNode->配置”屏幕中创建环境变量,如下所示:

Nodes -> WindowsNode -> Configure

2) 断开了我的Jenkins节点。
3) 直接在从机上重启了我的Jenkins系统进程。
4) 通过单击“节点 -> WindowsNode -> 系统信息”并查看分配给节点的新环境变量来进行测试:

enter image description here

5)然后将其用于 Jenkins 作业中,在 Windows 从属/代理上运行,通过在 执行 Windows 批处理命令 构建步骤中添加以下命令:

git --version


2
在Windows中,有一个用户路径变量和一个系统路径变量。Jenkins默认使用系统路径变量。更新路径后,您必须重新启动服务。

enter image description here


0
如果在Jenkins中设置全局变量会影响特定操作系统的代理或需要适应同一操作系统代理之间的差异,那么在代理的系统变量中设置路径可以解决这个问题。
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

0

只是想补充一下,因为我们遇到了类似的问题并在这里寻找答案。

在我们的情况下,全局设置环境变量不起作用,但在节点配置中以完全相同的方式定义它可以解决问题。我们的问题出现在管道项目上。Maven 项目无论哪种方式都可以正常工作。请参见定义的屏幕截图。

如果此定义在全局中,则在脚本化管道中,$path 不会扩展到构建服务器上的当前路径。它只保持为常量值 $path。如果将此相同的定义放在节点配置中,则 $path 将按预期扩展。

image


0
我解决Jenkins找不到'cmd'、'python'或'poetry'的问题是修改全局属性的环境变量部分: enter image description here
Name = Path

Value = C:\Users\yourusername\AppData\Local\Programs\Python\Python39;C:\Windows\System32;C:\Users\yourusername\AppData\Roaming\Python\Scripts

我之前遇到了这样的错误信息:
'cmd' is not recognized as an internal or external command,

并且

'python' is not recognized as an internal or external command,

0
  • 为从节点添加路径,例如主目录环境变量。

  • 可以通过从节点配置完成目录设置。

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

  • 例如,要设置HOME,请添加主目录的名称和位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接