我最近使用Homebrew安装了Jenkins。我还使用Homebrew安装了Mercurial。
我可以成功克隆一个hg仓库 - 从终端。但如果我尝试在詹金斯的工作中做同样的事情,那就失败了。
所以,在工作中,我告诉詹金斯运行shell脚本echo $PATH
。果然,路径/usr/local/bin
不在那里。如果我从终端执行相同的命令,它就在那里。
那么,什么是修改PATH的最佳方法,以便当我从终端回显时,Jenkins正在拉动我正在使用的相同PATH?
注意,Jenkins是从我登录进行这些测试的同一个用户帐户运行的,所以我无法理解为什么会发生这种情况。
在Jenkins的launchd .plist文件中,您可以使用以下命令设置PATH环境变量:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>(insert your path value here)</string>
</dict>
这应该将PATH设置为您需要的任何东西。
出于某种原因,Jenkins在连接到从属服务器时不会将/ usr / local / bin保留在PATH中。 您可以将其添加到PATH
PATH="/usr/local/bin:${PATH}"
我发现即使为节点设置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奴隶无头,那就更难了。
在以下PATH修改中,=两侧不应有空格:PATH =“/ usr / local / bin:$ PATH”
我将它添加到我在macOS上安装的Jenkins的预构建步骤中。