Instead of reusing any of the existing codebase, it was decided to start from the ground-up using the a new CMS as the platform to develop the new website that would serve multiple channels and also facilitate the marketing team to manage its content.
The business was also undergoing a transition from a traditional 'waterfall' method of development to using 'agile' processes. Behaviour Driven Development (BDD) was employed to capture and refine requirements.
There were also a number of technologies and tools adopted to deliver enhance productivity and deliver value. We decided to abandon the heavyweight enterprise application server as there was no need for the additional features that it provided, and use the more lightweight Tomcat servlet container. Jira  was used to capture requirements as stories, to raise issues and defects, and generally plan and track the project. Confluence  was adopted for documentation purposes and as a collaboration tool to discuss designs. Bamboo  was used as the continuous integration and build tool and all new source code was required to have unit tests. Functional and acceptance tests were developed using Cucumber  and Ruby  to create an automated regression testing suite.
Bamboo was configured to monitor every time code was committed to version control and trigger a build and test. With third-party plugins such as Sonar, the team was provided with visibility of test coverage and code quality. Using Bamboo to perform deployments into all environments also provided confidence in the deployment process so that there were no surprises during release into production. As the acceptance tests were also built and executed by Bamboo, it was possible to trigger them from Bamboo after a deployment using Bamboo's REST interface.
Bamboo deployment plans allow software artefacts created during the Bamboo build plans to be deployed into a given environment.
|Bamboo Deployment Plans|
|Bamboo Deployment Tasks|
|Bamboo Deployment Plan Variables|
Bamboo now simply needs to invoke this script as shown below.
|Invoke Deployment Script|