||This article contains content that is written like an advertisement. (September 2016) (Learn how and when to remove this template message)|
|Initial release||20 February 2007|
5.12 / May 24, 2016
Bamboo is a continuous integration server from Atlassian, the makers of JIRA, Confluence and Crowd. It is used to build, test and deploy applications automatically as per requirements and thus helps speed up the release process. Bamboo supports builds in a number of programming languages using various build tools and can also integrate with a large number of software for a variety of purposes.
Bamboo is free for open-source projects. Commercial organizations are charged based on the number of build agents needed.
In May 2016, The Register reported that "The move [to discontinue Bamboo in the cloud from 31st January, 2017] seems to spell the eventual end for Atlassian’s Bamboo tool as a separate cloud-based platform, though it will continue as a server product.".
Creating a project
The first step is creating a new Bamboo Project. Each Project consists of a number of Plans. A Plan is a set of actions that Bamboo follows while building, testing and deploying an application. A Plan consists of Stages, Jobs and Tasks.
Connecting the source repository
In this step, we specify the URL of our code repository and also give bamboo the necessary permissions to access our code.
There are different methods by which bamboo is prompted to run the build. Some of them are:
- Whenever a change is made to the repository.
- After specific intervals of time.
Configuring tasks in a plan
Each Plan can have multiple tasks configured. Some of the common tasks are:
- A default task which checks out code from the repository.
- A task for compiling the code(The Builder Task) and running test cases. We need to select a task depending on the build tool which our project is using.
- A task for getting the results of the test run on the code.
Plans can be reviewed and changed by going to the Bamboo webpage for a particular project, then selecting Builds > All Build Plans.
The plan now needs to be enabled and created. Once you do this, Bamboo will perform a set of initial steps including checking out the source code, building it and running test cases on it. If all of this goes through successfully, it means that the set up has been done correctly and we can continue using Bamboo.
Bamboo divides the application in a hierarchical order.
A Project is specific to an application and contains many plans in it. It has links to other applications as well.
A Plan contains the overall configuration for all the tasks being performed under it. It has information regarding:
- The source code repository
- The build triggers set up by the developer
- Who can view/modify the plan
- Plan variables
Initially, a plan has one stage, but multiple stages can be created by grouping together different jobs. All stages in a plan run sequentially. Starting from Bamboo 5, plans in Bamboo can now share build artifacts with each other.
It has a single job initially but multiple jobs can be created under it by dividing the list of tasks into different jobs. Every stage must finish completely before moving on to the next stage. One of the reasons this is required is because at times, a stage may have a dependency on the previous stage in terms of certain artifacts.
Jobs in a stage are run in parallel. For example, we may want the functional and unit tests to run at the same time. Each job can be assigned to a different agent. It performs a number of tasks on that agent. A job is assigned to an agent depending on its capacity to fulfill the requirements of the job. A job takes artifacts from previous stages, creates new ones, and also labels them.
It is the smallest unit of work that an agent does. Since all the tasks within a job are being performed on a single agent they need to be processed in a sequential order. Examples of a task include building a piece of code, deploying an application, etc.
- Bamboo can run multiple builds in parallel which helps complete the task faster and thus speeds up the integration process.
- In case of build failures, Bamboo can give you a detailed analysis of what went wrong, stack traces etc.
- Bamboo provides a Rest API to its users so that they can get information regarding the server, the current status of their builds, etc.
- Bamboo integrates closely with many software :
- Bamboo has a built in functionality to connect with repositories like Git, Apache Subversion, Mercurial, Concurrent Version System, Perforce, Bitbucket etc.
- In terms of Build tools,Bamboo has build tasks for tools like Ant, Maven, Make, MSBuild etc allowing you to program in a variety of languages.
- If you are using a code repository or a build tool other than those already supported by Bamboo, you can download the required plugin for them in most of the cases.
- Bamboo supports testing tools like PHPUnit, JUnit, Selenium.
- Bamboo is closely connected with other Altassian products such as JIRA (bug/issue tracking), Confluence (collaborative software) and Clover Java code coverage tool. So everyone in the team including the Managers and the testers can have a clear picture of what is going on in in the project.
- Build notifications can be customized based on the type of event, and received via The Wallboard, email, instant message, RSS, or pop-up windows in Eclipse-based IDEs and IntelliJ IDEA.
- It can import data from Jenkins for easy transition.
Some of the advantages of Bamboo over its contemporaries like Jenkins are that it has built-in Git Branching workflows and deployment projects. It also has built-in integration with other Atlassian softwares like Jira, Confluence, Bitbucket, HipChat etc which are also widely used.
Some of the disadvantages are that it is not always free and that it is not an open source software. So the time taken for getting fixes on issues could be longer.
Detailed Comparison with other Continuous Integration software is available here.
- Pouclet, Romain. Pro iOS Continuous Integration. Apress, 2014. ISBN 1484201248.