So you want to start integrating your shizzle on a continuous basis? Bamboo is great tool for that - especially if you use any other Atlassian toolset such as Jira and BitBucket.
You can download and install a bamboo server locally, or another option is to run it on the cloud using an "Elastic Instance". At my last place we used Bamboo for Continuous Deployment - generating content json files on an hourly basis.
Continuous Integration and Deployment
CI is a development practice where developers integrate code into a shared repository at least once per day, usually several.
A great reason for CD is that the deployment process is automated and triggered automatically, usually by a commit to git. Long gone are the days where a guy with a beaded brow is sitting over an FTP application and fingers quiverring whilst staring at a server terminal window.
A great resource on this is on the thoughtworks website.
When first looking into Amazon EC2 I was immediately smacked in the face by a lot of nomenclature. Spinny head and sore eyes ensued, followed by lols when realinsing exactly what these terms meant. I think it is better to cover some defintions to get a general understanding of what is what:
- Amazon S3
- A big storage space on the Amazon cloud
<dt><abbr title="Elastic Cloud Computing">EC2</abbr></dt> <dd>Elastic Cloud Computing: Lots of Virtual Machines on the cloud. E plus C times 2, get it? Like W3</dd> <dt><abbr title="Elastic Block Store">EBS</abbr></dt> <dd>Elastic Block Store: Disk drives/space on the cloud</dd> <dt><abbr title="Amazon Machine Image">AMI</abbr></dt> <dd>Amazon Machine Image: A predefined virtual machine type, like a windows or linux one</dd> <dt><abbr title="Amazon Virtual Private Cloud">VPC</abbr></dt> <dd>Amazon Virtual Private Cloud: A virtual network; a network of machines but in the cloud</dd> <dt><abbr title="Identity and Access Management">IAM</abbr></dt> <dd>Identity and Access Management: Security stuff like key value pairs, pem certificates etc</dd>
- Elastic Bamboo Image
- A predefined server (AMI instance) setup by Bamboo to have everything you need for Bamboo when you instantiate it
<dt>Elastic Bamboo Instance</dt> <dd>You have created an instance of the Elastic Bamboo Image</dd> <dt>Elastic Agent</dt> <dd>A service running on an Elasting Bamboo Instance that runs your job builds. Basically the bamboo server running on an instance</dd>
The above definitions aren't too bad really, but when the documentation throws these TLAs around, it's best to know whats going on.
Setting up the Elastic Instance is pretty straight forward, but at the time there was a big caveat. If you're using a region other than US East (you can check that in the elastic bamboo configuration), there will be no stock AMIs available for you, you're dealing with a custom AMI and that will need a lot of configuration. Stock AMIs will be available in all regions within a couple of weeks (from January 2015).
Once Bamboo is set up and we have an Elastic Instance then we can add a build. More details on the Atlassian website.
The Bamboo process is built using Plans, which execute stages (sequentially), stages run Jobs (in parallel), and Jobs run Tasks (sequentially).
I've created a Bamboo mind map detailing the common build processes and the Bamboo build process itself:
It's best to go through some tutorials at Atlassian.