[Bamboo Knowledge Base]
Plan branches are used to represent a branch in your version control repository, with the plan branch using the same build configuration as your plan.
Tools such as Git and Mercurial encourage a practice called feature branching, where a developer can use a new branch to work in isolation from his or her team members before merging their changes back into main line development. Previously however, changes made on a branch may not have been built and tested by Bamboo unless the developer had specifically set up a new build plan, or had cloned an existing plan and configured it to build the new branch.
Now, with plan branches in Bamboo:
On this page:
When you activate plan branching, Bamboo automatically creates plan branches whenever the source repo is branched. You can also create a plan branch manually.
You can override the master plan's configuration in a branch plan, if required.
To see a list of branches for a plan, click on the branch icon beside a plan name on the All Plans tab of the dashboard. Select a branch name from the list to go directly to the summary page for that branch plan.
Screenshot: The Plan Summary page for a branch, showing the 'branches' menu.
You can use auto branching for Git, Mercurial and Subversion repositories. For other repository types, you can use manual branching.
To have Bamboo automatically manage plan branches whenever the repo branches:
(branch1|branch2|branch3)/.*
See the Java documentation on regular expressions.Make the following optional settings as required. These will be applied to all branch plans created from this plan configuration, although they can be overridden in those branch plans, if required.
Merging | Not available for Subversion. Check Branch merging enabled, and complete either the 'Branch updater' or 'Gatekeeper' sections, as described below. |
JIRA feature branches | Check Create remote links from JIRA issues... to have the plan branch automatically linked, using an issue key in the branch name. Described below. |
Notifications | Described below. |
Plan branch cleanup | Edit the Remove after value (days), after which branches are automatically deleted, if no commits have been made to the VCS branch in that period. A value of zero prevents plans from being deleted. |
Branches Root | Only available for plans that use a Subversion source repository. Bamboo assumes that your Subversion repository structure follows the convention for branches, and automatically calculates the branch root URL. For example, for the If your Subversion repository structure follows a different convention, you can specify where repository branches will be created by selecting Change branch root URL. |
Once plan branching is enabled, Bamboo will check for a new branch every 300 seconds, by default. You can customize the branch detection interval as follows:
Use manual branching for all supported repository types. You may want to consider using auto branching for Git, Mercurial and Subversion repositories.
To manually create a branch of a plan:
When a developer begins working on a feature described in a JIRA issue, they use Git or Mercurial to branch the repository. If they use the issue key as part of the VCS branch name, Bamboo will detect the issue key and automatically link the new branch to the issue:
To use JIRA Feature Branching, Bamboo needs an application link to the JIRA server.
You can get build notifications from branch plans just as you do for master plans.
To specify how notifications are sent by all branches created from a plan, go to the Branches tab for the plan's configuration and choose one of the following options:
You can override how notifications are sent from a particular branch plan, if necessary, by going to the Notifications tab on the Plan Branch configuration.
See Configuring notifications for a plan and its jobs for information about plan notifications.
You can use build dependencies for plan branches in a similar way to that for plans: a branch plan is triggered only when another branch plan has been successfully built. This can be used to ensure that breaking source code changes associated with one branch plan are detected before they can break the build of a dependent branch plan. Dependencies between master plans are maintained if their branch plans have the same name. See Setting up plan build dependencies for further information about dependencies.
Select Enable dependencies for all branches of this plan, on the Dependencies tab for the plan configuration, if you want plan branches to honour the build dependencies of their respective master plans.
Whether a plan branch is created automatically or manually, the master plan maintains the structure and configuration of it's branch plans. However, you can go to the configuration pages to override the following settings in a branch plan:
Branch clean-up | On the Branch details tab of the branch's configuration, you can specify that a plan branch is not cleaned up automatically. Please note that automatic branch clean-up is supported for Mercurial, Git (Bamboo 4.1.1 and above) and Subversion (Bamboo 4.2.0 and above). |
Trigger type | On the Branch details tab of the branch's configuration. See Triggering builds. Note that you can only configure one trigger for a plan branch, and that this overrides all triggers that may be configured for the master plan. |
Merging | On the Branch details tab of the branch's configuration. Described below. |
Source repository | On the Source repository tab of the branch's configuration. See Linking to source code repositories. |
Notifications | On the Notifications tab of the branch's configuration. The options are:
See Configuring notifications for a plan and its jobs for information about plan notifications. |
Variables | On the Variables tab of the branch's configuration. See Defining plan variables. |
Bamboo provides 2 merging models if you choose to automate your branch merging:
The automatic branch merge strategy for the master plan can be overridden in an individual plan branch, if required.
The Branch Updater should be used when you want to:
To have recent changes in another repo merged into your branch repo:
The Gatekeeper should be used when you want to:
To have your successfully built changes pushed to another repo:
The following limitations apply to using automated plan branching and merging:
Action | Limitations |
---|---|
Auto plan branching |
|
Manual plan branching |
|
Auto branch merging |
|
The branches wallboard displays the status of all the branches and the plan that the branches belong to. The plan's own status always appears first. Plans shown as grey are disabled.
To display the branches wallboard: