Jenkins: Lessons and Insights

Let me begin by saying that I don't consider myself a Jenkins expert. I'm a software developer rather than a sysadmin. My knowledge in this area is limited to what I have figured out for myself over years of intermittent tinkering.

At work, many years ago, I set up a simple installation to do continuous integration on the project I was working on. There were two reasons; firstly because I had read about CI and its benefits, and wanted to try it in a real-world scenario. Secondly, I wanted to know when someone broke my stuff. Over the years this capability gradually expanded to cover other projects and is now a crucial step in our software delivery process.

Why am I writing this?

I recently expanded our CI capability from what was effectively a single machine install, to a scalable distributed pool of executors. This was done in response to an increasing demand on the existing Jenkins server - as more and more projects are added, a single machine instance can become the bottleneck. Simply put, we needed more power to allow Jenkins to keep up with the number of jobs we have.

I learned many things about Jenkins during this time, not all specifically related to clustering, but also solutions to problems that became apparent as a result of particular plugins or the adoption of new cluster configuration.

My aim is to save someone a little bit of the time I spent looking for answers. I sometimes found it hard to find solutions or workarounds to problems, so maybe what I write here will be of some use to somebody.

I was originally going to include them all in this article but the word count became quite large. I probably wouldn't read a post that long if I came across one, so I'll try not to inflict that upon anyone else.

The first insight is on Windows slave stability and will follow this post.

Jamie Femia

Read more posts by this author.