我最近使用Homebrew安装了Jenkins。我还使用Homebrew安装了Mercurial。
我可以从终端成功克隆一个hg repo。但是,如果我尝试在詹金斯的工作中做同样的事情,那就失败了。
所以,在工作中,我告诉Jenkins运行一个shell脚本echo $PATH
。果然,路径/usr/local/bin
不在那里。如果我从终端执行相同的命令,它就在那里。
那么,修改PATH的最佳方法是什么,以便当我从终端回显时,Jenkins正在拉动我正在使用的相同路径?
注意,Jenkins运行的是我登录进行这些测试的同一个用户帐户,所以我无法理解为什么会发生这种情况。
答案 0 :(得分:14)
在Jenkins的launchd .plist文件中,您可以使用以下命令设置PATH环境变量:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>(insert your path value here)</string>
</dict>
这应该将PATH设置为您需要的任何内容。
答案 1 :(得分:7)
出于某种原因,Jenkins在连接到奴隶时不会将/ usr / local / bin保留在PATH中。
您可以通过
使用
在用户文件夹中添加.bashrc文件PATH="/usr/local/bin:${PATH}"
答案 2 :(得分:3)
您可以在launchd.conf文件中设置PATH。有关详细信息,请参阅here。请注意,man launchctl
表示'命令可以存储在$ HOME / .launchd.conf或/etc/launchd.conf中,以便在launchd starts'时读取,因此您可以创建'.launchd.conf'在您的主目录中,并使用此文件链接中的说明。但据我所知,在launchd.conf文件中你无法将目录添加到PATH,你可以只重写PATH。
您还可以使用/etc/paths.d目录
答案 3 :(得分:3)
我发现即使为节点设置PATH环境变量也不适用于hombrew Mercurial安装。路径WOULD已设置,但仅适用于脚本构建阶段,而不适用于VCS结帐阶段。这就是我最后做的事情。
Manage Jenkins -> Configure System
Installation Directory
我放了/usr/local
Executable
参数已预设为INSTALLATION/bin/hg
,所以我就把它留在那里。Source Code Management
设置Mercurial Version
下,您刚刚添加的mercurial安装。希望能帮助其他人遇到同样的问题,现在我们不允许(默认情况下)在/usr/bin
内做任何事情。以前我会在那里使用symlinked hg,但是现在使用新的“系统完整性保护”“功能”,这不再是一项微不足道的任务,如果你的Mac奴隶无头,那就更难了。
答案 4 :(得分:0)
在以下PATH修改中,=的两边都不应有空格: PATH =“ / usr / local / bin:$ PATH”
我将其添加到在macOS上安装的Jenkins的预构建步骤中。