Bamboo multi-configuration plans
Asked by Christian:

With some automated build systems I've used in the past I've seen plans and configurations as separate concepts. With Bamboo they are one and the same.

What I mean is having some way of applying multiple configurations to the same build plan, in order to build the same plan with different compilation settings and/or for different platforms. I find this incredibly cumbersome with Bamboo at the momement, and it doesn't scale well for a large set of configurations.

What I would like to see is a way of specifying configurations separately from plans. Each configuration has a set of agent requirements and a set of key-value properties which can be substituted in a plan. Each (configurable) plan has a set of enabled configurations. The combination of plans and configuration is equivalent to the current notion of a plan. In my mind it sounds quite simple and straight forward, but I think there might be some issues with how to deal with plans triggering other plans (e.g., either by triggering when all configurations have completed, or triggering equivalent configurations in dependent plans).

Are there any plugins or planned features that can achieve this?


Answers:
author: Pierre Dupont
body: I'm looking for the exact same feature. It's better explained on Jenkins' wiki: <https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project>

Is there anyway with the current version of Bamboo to get the same feature? I really like the way it is done in Jenkins though; it's so simple.


author: Paudi Moriarty
body: The feature request mentianed above (BAM-907) was resolved in BAmboo 4.0 with the introduction of plan branches. That doesn't cover matrix testing though. :(

comments: author: Paudi Moriarty
body: 1. [BAM-9189](https://jira.atlassian.com/browse/BAM-9189) was resolved at the same time it seems. Also due to the introduction of Plan Branches.


author: Robert Dailey
body: Our code base is multi-platform, especially our game engine. Some code only builds on Windows, some on Linux. I need to be able to exercise our whole build on both platforms as a prerequisite to running unit tests. If the code breaks on one platform but not the other, we need to detect that. Also different C++ toolchains will conform to the standard differently than others. It helps you create a more robust codebase to build against different platforms and toolchains.

Definitely need to see the ability to build the same plan on multiple agents (some agents are on Windows, some are on Linux).


author: Sebastian Pastor
body: BUMP


author: James Dumay
body: There is a [feature request](https://jira.atlassian.com/browse/BAM-907) to implement templating for Plan configurations which would allow you to have a "master" Plan that all other Plans take their configuration from.

Would using [Plan variables](http://confluence.atlassian.com/x/4wEwDg) to abstract the configuration you want to change and then run a [parameterised build](http://confluence.atlassian.com/display/BAMBOO/Triggering+a+Plan+Build+Manually#TriggeringaPlanBuildManually-StartingaParameterisedPlanBuild) with the variable values you wish to override work for your usecase?

comments: author: Christian
body: Aren't the parameterized builds only available when you manually trigger a build? That wouldn't be workable. My configuration proposal would probably boil down to something similar except the parameters and their values are named as a configuration and plans are combined with these predefined configurations to produced the configured/parameterized plans. Including agent requirements is obviously also important since not all configurations may build on all agents.

Bottom line I think configuration and build steps are two orthogonal concepts which are currently merged into one to the detriment of the managbility of plans in large multi-configuration environments.