Let’s face it, we all want to be able to move at the fast pace of today’s business demands and often being quick to market can give your business a leg up on the competition. With the right tools in place, you can automate much of the process of development and deployment to empower your team to meet these demands. Over the next few posts, I will introduce and discuss some of the techniques and processes that can be used to achieve these goals using some of the tools provided by Atlassian.
First let us talk a bit about Continuous Integration (CI) and Continuous Deployment (CD). CI can be thought of as a strategy of software development that is built for speed of delivery and assures the quality of the code that is delivered. Developers continually commit code on a daily basis or more frequently. That code is then automatically built and changes are validated before it is merged into a master or deployment branch. CD is a process where that code, once validated and merged, can be automatically built for deployment, tested, and deployed automatically without any manual intervention.
Perhaps, as a developer, I am assigned a ticket in Jira to fix an issue with my companies' website. I create a branch from our master branch in Bitbucket, knowing that the master branch is always gold - meaning it is either what is on production or it is production ready. I make my changes and then commit my changes to the branch. A trigger sees that I committed some changes and a Bamboo job runs some tests and builds the code into an artifact that can be deployed. In this case, we will say it is a Docker image. Bamboo builds my docker image and deploys that image to our QA environment. Once the changes have been validated, a pull request is created in Bitbucket to pull my branch into the master branch for deployment. Reviewers are automatically assigned and sent notifications. Once the reviews have been completed, the code is merged into the master branch and the production build in Bamboo kicks off. The Production artifact can then be deployed using another Bamboo job when ready. As you can see, by automating this process we empower our team to move fast and be precise. Making smaller changes and deploying them often reduces the amount of time and complexity of the QA process.
Clear as mud? That’s ok, in my next post we will discuss and evaluate each process in more depth along with the Atlassian tools that can be used to achieve the goals set forth by such a fast-paced world.