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

问题描述 投票:31回答:5

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

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

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

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

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

macos jenkins homebrew launchd
5个回答
14
投票

在Jenkins的launchd .plist文件中,您可以使用以下命令设置PATH环境变量:

<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>(insert your path value here)</string>
</dict>

这应该将PATH设置为您需要的任何东西。


7
投票

出于某种原因,Jenkins在连接到从属服务器时不会将/ usr / local / bin保留在PATH中。 您可以将其添加到PATH

  • 在节点配置上添加环境变量,或
  • 使用。在用户文件夹中添加.bashrc文件 PATH="/usr/local/bin:${PATH}"

3
投票

您可以在launchd.conf文件中设置PATH。有关详细信息,请参阅here。请注意,man launchctl说“命令可以存储在$ HOME / .launchd.conf或/etc/launchd.conf中以便在launchd启动时读取”,因此您可以在主目录中创建“.launchd.conf”并使用此文件链接中的说明。但据我所知,在launchd.conf文件中你无法将目录添加到PATH,你可以只重写PATH。 您还可以使用/etc/paths.d目录查看here的解决方案


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. $$$

希望能帮助其他人遇到同样的问题,现在我们不允许(默认情况下)在/usr/bin内部做任何事情。以前我只想在那里使用symlinked hg,但现在使用新的“系统完整性保护”“功能”,这不再是一项微不足道的任务,如果你的Mac奴隶无头,那就更难了。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.