The Jenkins-Docker link is getting a boost from Jenkins platform vendor CloudBees.
The pairing was noted prominently during this week’s Jenkins User Conference in Silicon Valley, where Jenkins founder and CloudBees CTO Kohsuke Kawaguchi cited the symmetry. “You can maintain a very clean, homogeneous environment,” by running Jenkins with Docker, he said. If an installation features a lot of build slaves, or nodes, the same processes can be run over and over. “I know [that linking Docker and Jenkins] is something that a lot of people are interested in today.”
The company is even building a private cloud platform based on the Docker-Jenkins pairing. CloudBees Jenkins Platform Private SaaS Edition (aka Tiger) is in an alpha release stage and will provide ways to offer Jenkins as a service, said Andre Pino, CloudBees vice president of marketing. Tiger runs processes inside a Docker container. “What we’re going to see going forward is that Jenkins and Docker are going to become the standards for continuous delivery,” Pino said. Jenkins will automate the process and offer container technology to simplify deployment, he said.
There are also Docker plug-ins for Jenkins, Kawaguchi noted, including one for using Docker to run Jenkins as a Docker container. In addition, you'll find Docker Hub Notification, integrating with the Docker Hub cloud-based registry service for application or service containers, and Docker Build and Publish plug-in, for building projects with a Dockerfile text document.
CloudBees has also forged ties between Docker and Kubernetes, which orchestrates Docker containers. The Jenkins-Kubernetes plug-in, developed by Carlos Sanchez, CloudBees senior software engineer, enables running of dynamic slaves in a Kubernetes-Docker environment. “The plug-in creates a Kubernetes Pod for each slave started, defined by the Docker image to run, and stops it after each build,” according to its GitHub description.
At Nuxeo, makers of the Nuxeo content management platform, the company leverages Docker for fast provisioning of Jenkins jobs. “In our development flow, each developer needs to be able to start his own Jenkins Job,” said Thierry Delprat, Nuxeo CTO, in an email. “The idea is that all developments are done in separated branch and the CI -- Jenkins -- is responsible for testing this branch and merging into master once all the tests are OK. Starting a Docker container is much faster that starting a VM: This is very useful when it comes to being able to allocate a slave for each developer when he needs it.”