Jenkins:运行 build 不提供 docker slave
Jenkins: running build does not provision docker slave
我正在 运行ning Jenkins 1.609.1 与 docker-plugin 0.10.0 来提供 jenkins docker slave。 Docker 是 1.0.1 运行宁 Ubuntu 14.04.
我根据 https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin ("Shortcut : Pulling a Docker image") 上的每个指令 evarga/jenkins-slave
创建了自定义 docker 图像。
在我的 Jenkins 配置中我有:
- 已将 "Docker" 添加到 "Cloud" 区域
- 指向本地 docker URL http://localhost:4243/ 并且还适当地配置了 docker (我可以 运行 "Test connection" 并且它会返回报告"1.0.1")
- 使用 supervisord 创建了一个自定义 docker (
my/jenkins:0.1
) 镜像 运行 SSH、MySQL、Postgres、ElasticSearch、PHP 和 NodeJS
- 手动 运行 连接容器,我可以在里面与用户 jenkins/jenkins
SSH
- 我还给了容器内的 jenkins 用户无密码 sudo 权限
- 我已经在 "Docker Template" 中添加了一个 docker 图像(如上:
my/jenkins:0.1
)并通过 "Docker SSH launcher" 提供了启动方法
在作业配置中:
- 我检查过"Docker container"
- 添加了我的标签
- 源代码通过git结帐
连接
当我 运行 作业时,只执行 git 校验,但不是在从机上而是直接在主机上:
Started by user MyUser
Building in workspace /var/lib/jenkins/workspace/Project-Core
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url git@github.com:MyUser/Project-Core.git # timeout=10
Fetching upstream changes from git@github.com:MyUser/Project-Core.git
> git --version # timeout=10
using GIT_SSH to set credentials
> git -c core.askpass=true fetch --tags --progress git@github.com:MyUser/Project-Core.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 96dcbc7aa615451448184493c499c14eeb7050cc (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 96dcbc7aa615451448184493c499c14eeb7050cc
> git rev-list 1405ab6d96a395e53c80f6d7353e11bea93675bc # timeout=10
Finished: SUCCESS
甚至没有迹象表明要提供 docker 从站。
我错过了什么?
感谢 answer on the jenkinsci-user mailing list:
我可以解决它
我在全局"Docker template"配置中添加的"Label"必须在作业配置中的字段"Restrict where this project can run"中使用
我错误地将其添加到职位 "Docker Container / Additional tag to add" 字段中。
旁注:我使用的是 Docker 1.10.0,在修复上述问题后,现在可以使用该设置,我得到:
Error in provisioning; template='DockerTemplate{labelString='jenkins', launcher=com.nirima.jenkins.plugins.docker.launcher.DockerComputerSSHLauncher@28c3da52, remoteFsMapping='', remoteFs='/home/jenkins', instanceCap=2147483647, mode=NORMAL, retentionStrategy=com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy@1ccaa52c, numExecutors=1, dockerTemplateBase=DockerTemplateBase{image=jenkins:0.3}}'
com.github.dockerjava.api.InternalServerErrorException: Cannot start container b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee: write /sys/fs/cgroup/cpuset/docker/b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee/cpuset.cpus: invalid argument
升级到最新版本,就我而言是 1.7.1,立即解决了这个问题。
您是否将作业配置为 Docker 从站上的 运行。我认为这可能是问题所在,因为根据您的陈述,它 运行ning on master.
更多信息可以从我的post这里找到关于设置docker图像的信息。
http://www.scmtechblog.net/2016/01/setup-docker-slaves-for-jenkins.html
我正在 运行ning Jenkins 1.609.1 与 docker-plugin 0.10.0 来提供 jenkins docker slave。 Docker 是 1.0.1 运行宁 Ubuntu 14.04.
我根据 https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin ("Shortcut : Pulling a Docker image") 上的每个指令 evarga/jenkins-slave
创建了自定义 docker 图像。
在我的 Jenkins 配置中我有:
- 已将 "Docker" 添加到 "Cloud" 区域
- 指向本地 docker URL http://localhost:4243/ 并且还适当地配置了 docker (我可以 运行 "Test connection" 并且它会返回报告"1.0.1")
- 使用 supervisord 创建了一个自定义 docker (
my/jenkins:0.1
) 镜像 运行 SSH、MySQL、Postgres、ElasticSearch、PHP 和 NodeJS - 手动 运行 连接容器,我可以在里面与用户 jenkins/jenkins SSH
- 我还给了容器内的 jenkins 用户无密码 sudo 权限
- 我已经在 "Docker Template" 中添加了一个 docker 图像(如上:
my/jenkins:0.1
)并通过 "Docker SSH launcher" 提供了启动方法
在作业配置中:
- 我检查过"Docker container"
- 添加了我的标签
- 源代码通过git结帐 连接
当我 运行 作业时,只执行 git 校验,但不是在从机上而是直接在主机上:
Started by user MyUser
Building in workspace /var/lib/jenkins/workspace/Project-Core
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url git@github.com:MyUser/Project-Core.git # timeout=10
Fetching upstream changes from git@github.com:MyUser/Project-Core.git
> git --version # timeout=10
using GIT_SSH to set credentials
> git -c core.askpass=true fetch --tags --progress git@github.com:MyUser/Project-Core.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 96dcbc7aa615451448184493c499c14eeb7050cc (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 96dcbc7aa615451448184493c499c14eeb7050cc
> git rev-list 1405ab6d96a395e53c80f6d7353e11bea93675bc # timeout=10
Finished: SUCCESS
甚至没有迹象表明要提供 docker 从站。
我错过了什么?
感谢 answer on the jenkinsci-user mailing list:
我可以解决它我在全局"Docker template"配置中添加的"Label"必须在作业配置中的字段"Restrict where this project can run"中使用
我错误地将其添加到职位 "Docker Container / Additional tag to add" 字段中。
旁注:我使用的是 Docker 1.10.0,在修复上述问题后,现在可以使用该设置,我得到:
Error in provisioning; template='DockerTemplate{labelString='jenkins', launcher=com.nirima.jenkins.plugins.docker.launcher.DockerComputerSSHLauncher@28c3da52, remoteFsMapping='', remoteFs='/home/jenkins', instanceCap=2147483647, mode=NORMAL, retentionStrategy=com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy@1ccaa52c, numExecutors=1, dockerTemplateBase=DockerTemplateBase{image=jenkins:0.3}}' com.github.dockerjava.api.InternalServerErrorException: Cannot start container b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee: write /sys/fs/cgroup/cpuset/docker/b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee/cpuset.cpus: invalid argument
升级到最新版本,就我而言是 1.7.1,立即解决了这个问题。
您是否将作业配置为 Docker 从站上的 运行。我认为这可能是问题所在,因为根据您的陈述,它 运行ning on master.
更多信息可以从我的post这里找到关于设置docker图像的信息。
http://www.scmtechblog.net/2016/01/setup-docker-slaves-for-jenkins.html