40

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

我可以从终端成功地克隆一个 hg repo。但是,如果我尝试在 Jenkins 的工作中做同样的事情,它就会失败。

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

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

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

4

5 回答 5

21

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

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

那应该将 PATH 设置为您需要的任何内容。

于 2013-03-25T18:10:41.057 回答
12

出于某种原因,Jenkins 在连接到从站时不会将 /usr/local/bin 保留在 PATH 中。
您可以通过以下方式将其添加到 PATH

  • 在节点配置上添加环境变量,或

  • 在用户文件夹中添加 .bashrc 文件

     PATH="/usr/local/bin:${PATH}"
    

注意:Mac 客户端必须断开连接,然后在编辑 ~/.bashrc 后通过 Jenkins Web 应用重新连接

于 2016-10-07T04:21:53.057 回答
3

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

于 2013-03-26T06:58:56.453 回答
3

我发现即使为节点设置 PATH 环境变量也不适用于 hombrew Mercurial 安装。将设置路径,但仅适用于脚本构建阶段,而不适用于 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。以前我只会在此处对 hg 进行符号链接,但现在有了新的“系统完整性保护”“功能”,这不再是微不足道的任务,如果你的 Mac 从机是无头的,那就更难了。

于 2016-09-07T22:43:57.937 回答
2

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

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

于 2019-02-25T08:12:41.380 回答