docker: command not found ( mac mini ) 仅发生在 jenkins shell 步骤中,但在命令提示符下工作

docker: command not found ( mac mini ) only happens in jenkins shell step but work from command prompt

我正面临这个奇怪的问题,近几天来一直在努力解决。

工作: 在 mac 迷你命令提示符下,我切换到 jenkins 用户并且可以 运行 docker 命令没有任何问题。

不工作: 但是当我 运行 一个 jenkins 作业时,在 shell 命令步骤 docker 中无法识别。

我遇到错误

docker: command not found

docker --version

但是提到 docker 的显式路径确实有效

/Users/buildserver/Library/Group\ Containers/group.com.docker/bin/docker --version

问题:为什么 docker 命令无法查看正确的路径?

权限

lrwxr-xr-x 1 名 buildserver 员工 71 10 月 14 10:44 docker -> /Users/buildserver/Library/Group Containers/group.com.docker/bin/docker

jenkins 使用的是 staff 组的一部分。

提前致谢。

此致, 维克拉姆

Jenkins 作业开始的 PATH 与 Jenkins 用户在 bash 中看到的路径不同。在 Jenkins UI 中,您可以编辑环境变量(来自管理 Jenkins/Configure 系统),并将 Docker 文件夹添加到 PATH:

PATH -> $PATH:/Users/buildserver/Library/Group\ Containers/group.com.docker/bin/

this question 的答案中有更多详细信息。

对于其他人(迟到但值得),我通过 Brew 安装了 Jenkins,所以我将 Docker 的路径 添加到下面的文件中: /usr/local/Cellar/jenkins-lts/2.176.3/homebrew.mxcl.jenkins-lts.plist(整个文件如下所示)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>homebrew.mxcl.jenkins-lts</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/libexec/java_home</string>
      <string>-v</string>
      <string>1.8</string>
      <string>--exec</string>
      <string>java</string>
      <string>-Dmail.smtp.starttls.enable=true</string>
      <string>-jar</string>
      <string>/usr/local/opt/jenkins-lts/libexec/jenkins.war</string>
      <string>--httpListenAddress=127.0.0.1</string>
      <string>--httpPort=8080</string>
    </array>
    <key>RunAtLoad</key>
    <true />
    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Docker.app/Contents/Resources/bin/:/Users/Kh0a/Library/Group\ Containers/group.com.docker/Applications/Docker.app/Contents/Resources/bin</string>
    </dict>
  </dict>
</plist>

然后重启Jenkins的服务:

brew services restart jenkins-lts

More question

我已经通过更新文件解决了上述问题

/usr/local/Cellar/jenkins-lts/2.176.3/homebrew.mxcl.jenkins-lts.plist. 

我在上面的文件中添加了docker的路径

<key>EnvironmentVariables</key>
  <dict>
    <key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Docker.app/Contents/Resources/bin/:/Users/admin/Library/Group\ Containers/group.com.docker</string>
  </dict>