Use Containers to setup build agents, without any constraint on images you can use.
- [✓] use ANY docker image, without any jenkins-specific prerequisite
- [✓] no SSHD inside container, no JNLP port exposed over the Internet
- [✓] compose your build à la docker-compose with a main build container and sidecar containers for test database, selenium browser, etc
- [✓] define container used for the build as a Dockerfile stored in project SCM - aka "continuous delivery as code"
- [✓] support Pipeline
- [✓] rely on docker volumes to offer workspace persistence between builds
- [✓] extensibility for various docker hosting solutions
In your jobs, new option let you define your build environment as a
combination of Docker images / Dockerfiles
Fix support for Docker host credentials
Add support for docker socket bind mount via a dedicated binding container. This let you run `docker build` from your build container
Plugin has been moved to jenkinsci github organization so we can publish it in public update center
This version has been released at DevoxxFrance while we demonstrated the plugin, so people can give it a try and let us know if it was useful
Why (yet another) Docker plugin ?
Most plugins around use docker as a lightweight virtual machine, but don't embrace containers paradigm shift and how they impact CI/CD.
This plugin has been designed as a pure experiment during Docker Global Hack Day. It's under active development. Plugin authors are CloudBees employees, but the plugin isn't a CloudBees product, please consider this as individuals public experiment.
Read more on https://dockins.github.io
If something goes wrong (sic), please first run Jenkins master with
-Dit.dockins.dockerslaves.spi.DockerDriver.verbose=true . This will
dump in build log all docker commands ran by the plugin and help us
understand the issue.
Then, ask for assistance on jenkins-users mailing list and/or report a bug on https://issues.jenkins-ci.org
There's many possible improvements / features we'd like to experiment.
- integrate with Pipeline plugin, especially replace DurableTask by a
docker based implementation, running docker commands detached (-d)
and polling using docker API for execution status. Would need some
way to replace the
- consider using a java based docker client for Docker API, so we don't rely on running external commands (and related threads usage)
- integrate with docker orchestrators (amazon ECS, Kubernetes, Hyper_ ...) as an alternative backend
- offer isolated Docker host per build, typically relying on docker inside LXD containers.
- Let build use of docker as part of the build (i.e. bind mount docker.sock in build container)
- experiment with docker volume plugins (flocker) for workspace snapshoting and offline browsing of the exact workspace for a specific build.
- experiment pipeline support for volumes
- support docker 1.12 swarm mode JENKINS-38203
- expose docker.sock so build can run `doker build` (aka "inception") JENKINS-37088