Search code examples
gitsshjenkinsdockerslave

Jenkins: running build does not provision docker slave


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?


Solution

  • 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.