Seven Habits of Highly Effective Jenkins Users

Java: Craftsmanship
Location: A106
Average rating: ***..
(3.50, 6 ratings)

One of Jenkins’ greatest strengths is its flexibility – via its plugin system, it supports a diverse array of source control systems, build tools, reporting tools and much, much more. This means there is no one right way to set up your Jenkins configuration – rather, Jenkins, and your build process in general, should adapt to fit your distinct needs. But this doesn’t mean that you can’t learn from other Jenkins setups! In my 2.5 years using and developing Jenkins, I’ve had three very different use cases, ranging from building and unit testing a small number of pure Java projects at Cisco, to pre-tested commits and continuous deployment of a production webapp written primarily in PHP and Python at Digg, and now a combination of Java builds, unit testing and reporting, native packages for a number of Linux distributions, and automated smoke, integration and performance testing on all those platforms as well.

This has given me a fairly broad experience with different uses for Jenkins, and for the common trends across those different uses. I’ll talk about what I’ve learned, what mistakes I’ve made, and what best practices I’ve settled on across all these use cases. I’ll also put on my “Jenkins committer and governance board member” hat to talk a bit about the current state of the Jenkins project itself, and where the Jenkins development community is planning to take it in coming months.

Photo of Andrew Bayer

Andrew Bayer


Andrew Bayer is a Jenkins evangelist at CloudBees. Previously, he spent nearly five years as the build and tools architect at Cloudera, with stints at Digg and Cisco as a build and release engineer before that. He’s a longtime contributor to the Jenkins project, both plugins and core, a contributor to a number of Apache Software Foundation projects, including Apache jclouds, and is a member of the Apache Software Foundation.