Mac上的jenkins,PATH没有设置正确,没有/ usr / local / bin

时间:2013-03-25 16:50:09

标签: macos jenkins homebrew launchd

我最近使用Homebrew安装了Jenkins。我还使用Homebrew安装了Mercurial。

我可以从终端成功克隆一个hg repo。但是,如果我尝试在詹金斯的工作中做同样的事情,那就失败了。

所以,在工作中,我告诉Jenkins运行一个shell脚本echo $PATH。果然,路径/usr/local/bin不在那里。如果我从终端执行相同的命令,它就在那里。

那么,修改PATH的最佳方法是什么,以便当我从终端回显时,Jenkins正在拉动我正在使用的相同路径?

注意,Jenkins运行的是我登录进行这些测试的同一个用户帐户,所以我无法理解为什么会发生这种情况。

5 个答案:

答案 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中。
您可以通过

将其添加到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目录

查看解决方案here

答案 3 :(得分:3)

我发现即使为节点设置PATH环境变量也不适用于hombrew Mercurial安装。路径WOULD已设置,但仅适用于脚本构建阶段,而不适用于VCS结帐阶段。这就是我最后做的事情。

  1. 进入Manage Jenkins -> Configure System
  2. 添加新的Mercurial安装
  3. 将它命名为您想要的任何名称(我将其命名为build-mac)
  4. 对于Installation Directory我放了/usr/local
  5. Executable参数已预设为INSTALLATION/bin/hg,所以我就把它留在那里。
  6. 此处的其他所有内容均可留空
  7. 进入您的工作并编辑配置
  8. Source Code Management设置Mercurial Version下,您刚刚添加的mercurial安装。
  9. 保存
  10. $$$
  11. 希望能帮助其他人遇到同样的问题,现在我们不允许(默认情况下)在/usr/bin内做任何事情。以前我会在那里使用symlinked hg,但是现在使用新的“系统完整性保护”“功能”,这不再是一项微不足道的任务,如果你的Mac奴隶无头,那就更难了。

答案 4 :(得分:0)

在以下PATH修改中,=的两边都不应有空格: PATH =“ / usr / local / bin:$ PATH”

我将其添加到在macOS上安装的Jenkins的预构建步骤中。