Lately I've been trying to support work happening in a variety of our development branches, and that's been challenging to the two machine setup I mentioned here. Visual Studio (unfortunately) takes a long time to install and uninstall. Also during our development cycle uninstall is sometimes broken. That means that people often re-image (at least) their test machines whenever they need to install a new build of Visual Studio.
In order to do work in three different branches somewhat simultaneously, I need to have test machines that have those three different branches installed. It wasn't reasonable to re-image and re-install my single test machine every time I needed to switch branches. It's also not very cost effective for me to have 3 test machines where two of them spend the vast majority of their time idle, not to mention that this doesn't scale well if one day I need a 4th branch.
So last week, I jumped on the virtualization bandwagon. I flattened my best machine, installed windows server 2008 64-bit*, and started using virtual machines for my test machines. So far it's been working out very well for me, but I do have to give credit to some other people. A few people in our test group have written some automation around Virtual Server to make life easy for people wanting to use virtual machines. They have some software that manages creating VMs for you. It basically does the following steps:
- Pull an image of a selected OS from the network, and cache it locally.
- Create a VM
- Install the OS
- Add it to the corporate network domain
- Install the latest set of Windows Updates
- Add my domain account to the Administrators group.
- Optionally run a custom script to install more software.
For step 7, this group has provided stock scripts for installing various versions of Visual Studio, and one to install the latest build from a selected branch. It's really convenient, since steps 2 to 6 only take about 25 minutes (and step 1 is usually skipped because the image is in the usually in your local cache).
They also have an option to have the VM be destroyed and re-created every night, which means that you can come in to work in the morning and have a fresh test machine with the latest build on it.
So, I started out need to have 3 test machines in 3 different branches, but the system is so easy to use that I've already built up a larger set than that. My current list of virtual machines is:
- VS2008 without SP1
- VS2008 with SP1.
- A debug build of VS from each of the 3 branches I mentioned above.
- A release build of VS from the branch I normally work in for performance testing (I don't need absolute numbers, just finding the hotspots).
My only wish is that they update it to take advantage of Hyper-V soon to improve performance of the hosted machines.
* I previously had Vista 32-bit on the machine because at the time I set it up Server 2008 wasn't released yet, and there was a bug in the interim builds of visual studio that made install fail on 64-bit machines.