Just clone it! 

Some real-life example: someone had a problem changing a default port for Jenkin’s HTTP connector. I already had a similar system available building couple projects. While reading that post I’ve realised that it will cost me almost nothing to help this person and check out if this problem exist. How this could be that simple?

You can use complex systems. Locally!

First, because I run Jenkins locally. You can check out Dave Carver’s post Local Continuous Integration with Hudson and Git (sorry, I failed to find a link to original post on his blog) why and how to setup such environment. Here is his another post on how such setup affects your development workflow. Distributed CI: How it could work « Quality Software Development with Ease has a lot of details how to deal with distributed builds. My setup is slightly different as I use a vitrual machine to run Jenkins, with a Git, Subversion and some other tools like several versions of JDK etc. And all this stuff is completely independent from my main development tools.

You can freely experiment with such systems

Second, because running on a virtual machine gives my some other benefits like being able to pause it or clone at any moment. And I did exactly this: paused running VM, cloned it and started it back. Now I was able to experiment with a completely working system. It actually took about 15 minutes during a lunch to verify this without any risk to break my working system.


Here are two more reasons why using virtualization even on something that small as Lenovo ThinkPad X201 Tablet makes sence. You may use this system full-time. Or only from time to time. It may be critical for your daily activity. Or completely irrelevant and nothing will happen if it will be unavailable for a week. The main point while using virtualization is: it doesn’t matter!