3
votes

I'm running Jenkins 1.609.1 with docker-plugin 0.10.0 to provision jenkins docker slave. Docker is 1.0.1 running on Ubuntu 14.04.

I've created a customized docker images based on evarga/jenkins-slave per instruction on https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin ("Shortcut : Pulling a Docker image").

In my Jenkins configuration I've:

  • added "Docker" to the "Cloud" area
  • pointed to the local docker URL http://localhost:4243/ and also configured docker appropriately (I can run "Test connection" and it reports back "1.0.1")
  • created a custom docker (my/jenkins:0.1) image using supervisord to run SSH, MySQL, Postgres, ElasticSearch, PHP and NodeJS inside
  • manually running the container, I can SSH inside with user jenkins/jenkins
  • I've also given the jenkins user inside the container password-less sudo rights
  • I've added a docker image to the "Docker Template" (as above: my/jenkins:0.1) and provided the launch method via "Docker SSH launcher"

enter image description here

In the job configuration:

  • I've checked "Docker container"
  • added my tag
  • source code is connected via git checkout

enter image description here

When I run the job, only the git checkout is performed, but not on the slave but directly on the host:

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

There's no sign of even trying to provision the docker slave.

What am I missing?

2

2 Answers

1
votes

I could solve it thanks to an answer on the jenkinsci-user mailing list:

The "Label" I added to the global "Docker template" configuration has to be used in the field "Restrict where this project can run" in the job configuration.

I mistakenly added it to the jobs "Docker Container / Additional tag to add" field.

On a sidenote: I was using Docker 1.10.0 which, after fixing the above, turned out to now work with the setup, I got:

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

Upgrading to the latest version, 1.7.1 in my case, instantly fixed this.

0
votes

Did you configure your job to run on Docker slave. I assume that could be the issue because as per your statement its running on master.

More info can be found on setting up docker image from one of my post here.

http://www.scmtechblog.net/2016/01/setup-docker-slaves-for-jenkins.html