我正面临这个奇怪的问题,近几天以来一直在努力解决。
工作: 在 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 使用的是员工组的一部分。
提前致谢。
问候, 维克拉姆
我有几个jenkins从属配置,只有标签与docker dockerserverenv,那么我如何限制jenkins管道docker代理在这个奴隶?
下面Jenkinsfile不起作用,agent里面stage将覆盖定义的从属dockerserver
pipeline {
agent { label 'dockerserver' }
stages {
stage('Back-end') {
agent {
docker { image 'maven:3-alpine' }
}
steps {
sh 'mvn --version'
}
}
stage('Front-end') {
agent {
docker { image 'node:7-alpine' }
}
steps {
sh 'node --version'
}
}
}
}
它可能会选择其他没有支持docker的slave
有什么建议吗?
当使用 Pipeline 语法和 Docker 代理从 Jenkinsfile 运行作业时,管道失败并显示“Docker:找不到命令”。我理解这意味着(1)Docker 未安装;(2) Jenkins 未指向正确的 Docker 安装路径。我的情况与这个问题非常相似:Docker command not found in local Jenkins multibranch pipeline。Jenkins 安装在 MacOS 上并运行localhost:8080. Docker 也已安装(v18.06.0-ce-mac70)。/
pipeline该用户的解决方案包括从声明性语法到脚本化语法的切换node。但是我想在保留声明性语法的同时解决问题。
詹金斯文件
#!groovy
pipeline {
agent {
docker {
image 'node:7-alpine'
}
}
stages {
stage('Unit') {
steps {
sh 'node -v'
sh 'npm -v'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息
docker inspect -f . node:7-alpine
docker: command not found
docker pull node:7-alpine
docker: command not found
Run Code Online (Sandbox Code Playgroud)
在 Jenkins …