docker:找不到命令(mac mini)只发生在jenkins shell步骤中,但是从命令提示符

时间:2016-10-14 12:19:33

标签: macos jenkins docker docker-machine

我正面临这个奇怪的问题,几乎几天都在努力解决。

工作: 在mac mini命令提示符下,我切换到jenkins用户,可以毫无问题地运行docker命令。

不工作 但是当我运行jenkins作业时,内部命令步骤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 staff 71 Oct 14 10:44 docker - > / Users / buildserver / Library / Group Containers / group.com.docker / bin / docker

jenkins使用是员工组的一部分。

提前致谢。

此致 维克拉姆

2 个答案:

答案 0 :(得分:2)

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

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

this question答案中的更多细节。

答案 1 :(得分:0)

对于其他人(后来但值得),我通过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