can i configure bamboo plan branching to exclude running a job on the master branch?
Asked by AndyAtTogether:

I have a plan that i want to run no feature branches but i don't really want the plan to run on the master. Is there a way of configuring this\>


Answers:
author: AndyAtTogether
body: ok so the answer that i found that works (in case anyone else is interested) is to insert the regular expression \^((?!master).)\*$ into the "Only Create Branches that Match" field on the branch configuration tab

comments: author: Scott Butcher
body: This method didn't work for me. Bamboo did not use this regular expression to exclude branches.


author: Hua Soon SIM _Akeles_
body: The not so obvious way is to disable the plan.

Apparently, it does not disable the branch plan creation and execution.

When the master plan is disabled but configured with automatic branch management, a new branch plan will still be created. Commits to the branch will trigger a branch plan to run unless you explicitly disable that particular branch plan.

For details, refer to <https://jira.atlassian.com/browse/BAM-20138>


author: Scott Butcher
body: These steps work in Bamboo 5.12. I have no idea what other versions of Bamboo are like.

1. In the Bamboo build plan, navigate to the Branches tab and select "Create plan branches for matching new branches" and add a regular expression, for example "\^feature/". Or you can select "Create plan branches for all new branches" and skip the regular expression.

2. If there isn't already a branch plan for master, add it manually using the "Create plan branch".

3. Navigate to the Branch details tab for the master branch plan and change the trigger type to manual.


author: ArmenA
body: Hi Vincent,

Currently Bamboo doesn't support conditional flow controls. You can achieve a similar goal by splitting your current plan into 2 plans (the one that contains the build \& package part, and the other one that contains the rest). Next, add a Script task to be the last task in your first plan. In your script task write a small script that will check the [plan variable](https://confluence.atlassian.com/display/BAMBOO/Using+global,+plan+or+build-specific+variables) that returns the branch name (bamboo.repository.branch.name), and if the branch name is not a specific one, use this command to trigger the second plan:

```
curl -X POST --user admin:admin "http://localhost:8085/rest/api/latest/queue/FOO-BAR?executeAllStages=true"
```

where "admin:admin" is the username and password, and "FOO-BAR" is the plan key you want to trigger. I know this doesn't look the exact action that you ment, but as I said, Bamboo doesn't support conditional controls.

Cheers,  
Armen

comments: author: Richard Cross
body: I would not recommend the above if using Bitbucket (or Stash) with Pull Requests.

Only the very first plan triggered by a code change will then report a "Successful Build" to Bitbucket; therefore someone could easily think a build was successful, only to find that the subsequent plan actually failed.


author: Ondra Medek
body: Hm, putting admin user and pass into the bamboo script, ugh, it's a really dirty hack.


author: ArmenA
body: Yes, you can configure your plan branch to use any repository branch you want to. For more information, please refer to [this page](https://confluence.atlassian.com/display/BAMBOO/Using+plan+branches).

By the way, if you just want to checkout from the master branch and don't need other branch plan featuers, you can configure a specific branch (by default Bamboo uses the master branch) on the [repository configuration](https://confluence.atlassian.com/display/BAMBOO/Connecting+to+code+repositories) page of a regular plan. For instance, if you use Git, you can specify the branch in the Branch field as it's mentioned in the [documentation](https://confluence.atlassian.com/display/BAMBOO/Git).

Cheers,  
Armen

comments: author: AndyAtTogether
body: ok so the answer that i found that works (in case anyone else is interested) is to insert the regular expression \^((?!master).)\*$ into the "Only Create Branches that Match" field on the branch configuration tab


author: javafun
body: Hi Armen

I have a list of jobs, build\&package, deploy to dev , deploy to stage etc. How can I configure the **branch only run the first job** - build \& package, not the rest of the jobs?

Thanks


author: Ciprian Diaconasu
body: I'm trying to configure a plan to exclude branches that start with "hotfix". I'm using "Only create branches that match" "\^((?!hotfix).)\*$", but that plan still executes on branches like hotfix/ABC or hotfix-ABC.

Is this a bug on Bamboo or my regexp is not right (although all regexp parsers exclude strings like hotfix/ABC or hotfix-ABC on that regexp)?

comments: author: ArmenA
body: Hi Ciprian,

The regex is for creating plan branches, not for running them. If you create a branch in your repository and you want Bamboo to detect and automatically add the corresponding plan branch, that's when the configured regex will be used. However, if the plan branch is already created in Bamboo, the branch will run whenever it's triggered. Makes sense?

Armen


author: Ciprian Diaconasu
body: Hey!

Thanks for your reply. So I'd have to delete the plans created automatically and new ones that don't match the regex should not be created automatically, right?

Ciprian


author: ArmenA
body: You are right, Ciprian. You need to remove the old plan branches that shouldn't have been added to Bamboo. The new correct branches that you create in your repo will be added to Bamboo based on the configured regex.

Armen


author: Ciprian Diaconasu
body: Thank you very much for your answer! Made my day!

Ciprian


author: javafun
body: Hi

I have a list of jobs, build\&package, deploy to dev , deploy to stage etc. How can I configure the branch only run the first job - build \& package, not the rest of the jobs?

:bamboo:

comments: author: javafun
body: Anyone can give a suggestion?


author: AndyAtTogether
body: sorry that should read...

I have a plan that i want to run feature branches on but i don't really want the plan to run on the master. Is there a way of configuring this?


Tags: branch

cloud

plan