One of my customers is an Atlassian OnDemand customer (at my recommendation). One of the tools we are starting to use is Bamboo for continuous integration. The beauty of Bamboo as a product is it’s Elastic Bamboo feature. This feature allows CI builds to spin up on virtual machine instances on Amazon’s EC2. This gives me (the developer) quite a bit of flexibility. I gain the ability to have mulitple virtualized environments with different specifications ready to test my software against (think: different versions of PHP, MySQL, *nix, etc.). Furthermore, I can run the build process on much beefier hardware than what Bamboo is currently running on, allowing the tests to complete faster and keep my feedback loop small.
The idea is really great, but the Bamboo team has only one type of EC2 AMI virtual machine image premade for working with Elastic Bamboo - a Java developer’s VM. This meant I needed to customize the virtual machine to add software packages I need to work for PHP development. That was no trivial task, considering the number of problems I ran into just trying to get it running. This blog post should hopefully cover the necessary steps to getting it working.