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

vik*_*mvi 11 macos jenkins docker docker-machine

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

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

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

我收到错误

docker: command not found

docker --version
Run Code Online (Sandbox Code Playgroud)

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

/Users/buildserver/Library/Group\ Containers/group.com.docker/bin/docker --version
Run Code Online (Sandbox Code Playgroud)

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

权限

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

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

提前致谢。

问候, 维克拉姆

Kho*_*hoa 28

对于其他人(晚但值得),我通过 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>
Run Code Online (Sandbox Code Playgroud)

然后重启Jenkins的服务:

brew services restart jenkins-lts
Run Code Online (Sandbox Code Playgroud)

更多问题


Elt*_*man 5

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

PATH -> $PATH:/Users/buildserver/Library/Group\ Containers/group.com.docker/bin/
Run Code Online (Sandbox Code Playgroud)

这个问题的答案中有更多细节。