This is a docker image forked from the fine work done here.
Available on Dockerhub
- Optimised for use within a kubernetes cluster and for use with this master
JNLPbased agent- Self-registers to Jenkins master
- Unregister from the master when container exits
- Downloads agent.jar from Jenkins master when the container starts. This avoids versioning problems.
- Docker, aws cli and kubectl installed. This allows for build, push, deploy within a Kubernetes cluster.
Environment variables
most used variables:
JENKINS_AUTHjenkins server username and either password or API token (inuser:secetformat)JENKINS_URLjenkins master url (examplehttp://localhost:8080)JENKINS_SLAVE_NAMEthe name which will be used when registering (default is$HOSTNAME)JENKINS_SLAVE_NUM_EXECUTORSnumber of executors to use (defaults to1)
less used and can keep the defaults
DOCKER_GROUPthe docker group name, should be same as the docker's host group (defaults todocker)DOCKER_SOCKETthe docker socket location (default is/var/run/docker.sock)JAVA_OPTSpass java options to theslave.jarprocess (default is not set)
Required permissions
The image should be used in trusted environment, even so the permissions for the user that will be used to register the slaves should be restricted.
DO NOT USE ADMIN USER
Therefore, in order to be able to self register to the master, a user with relevant permissions must be created.
The required permissions are:
Overall/ReadAgent/ConnectAgent/CreateAgent/Delete
Running
when running without any env variables:
$ docker run --rm simenduev/jenkins-auto-slave
please set both JENKINS_URL and JENKINS_AUTH env. variables
example:
JENKINS_AUTH=user:password
JENKINS_URL=http://localhost:8080the basic working command:
$ docker run -d \
--net host \
-e JENKINS_URL=http://jenkins.internal.domain:8080 \
-e JENKINS_AUTH=registrator:1234567890123456789012 \
-v /any/path/you/like:/var/jenkins_home \
simenduev/jenkins-auto-slaveMounting of
/var/jenkins_homevolume is required in order for agent to be able to build jobs.
below command will also permit the slave run docker commands:
$ docker run -d \
--net host \
-e JENKINS_URL=http://jenkins.internal.domain:8080 \
-e JENKINS_AUTH=registrator:1234567890123456789012 \
-v /any/path/you/like:/var/jenkins_home \
-v /run/docker.sock:/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
simenduev/jenkins-auto-slave