At work, we use Jenkins as our continuous integration server. This machine was built over 3 years ago and has been very stable. One thing I had tried to debug at various points in the past is that our builds on this machine take 2-3 times longer than on our local machines. Other than that, the server has been rock solid stable.

This week, we made a change to our build scripts which worked fine on our local boxes (Windows) and on some VMs (Linux). However, the build failed with class not found errors on the build machine. As part of debugging this issue, I noticed that Java had never been upgraded on the build server. So, we upgraded Java from 1.6.0_07 to 1.6.0_21. It did not solve the problem but it was a needed change to the build server so we kept it. (FYI – the issue with the build was a dependency order issue which was resolved by simplifying the build scripts.)

When we thought we had everything fixed, I kicked off a full build from Jenkins. I was planning on coming back to check it in about 30 minutes (the expected full build time) only to be surprised when I got the build working normally email after 8 minutes. Unexpected. I checked the logs. Everything ran. I checked the build artifacts. All looked good. However, I did not believe the changes we made would speed up the build that quickly. Especially since our local builds did not speed up.

I kicked off a branch build (old build scripts) and it too completed in about 8 minutes. This leads to the java upgrade. I changed the active java version back to 1.6.0_07 and the build took nearly 30 minutes. Changed it back to 1.6.0_21. Build takes 8 minutes. Our automated tests are all running successfully. No build related issues have been discovered by our testers. Looks like this simple change has sped up or continuous integration server dramatically.