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.