We are using Bamboo v3.1.1 as our continuous integration build server, and it works quite well - most of the time.
One issue we're having is that we're doing a fair amount of database-oriented testing, e.g. the builds do some of their unit and integration tests on a shared database instance.
This causes issues when we happen to have multiple Bamboo builds for the same build plan running at the same time - they're stumbling over each other's feet and cause deadlocks and usually, all builds involved will fail due to this.
So while parallel builds are great - in theory - we'd really like to be able to define a build plan to "serialize" the builds, e.g. never execute more than one build in parallel.
Does anyone know how can we do this?? Is there a setting to tell Bamboo "don't parallelize this build plan - just do one build at a time, in a serial fashion"
Update:
My build process currently has two stages:
- core build (building VS solution, updating test database to latest scripts)
- testing (NUnit 2.4)
The "core build" can easily be run multiple times in parallel - no problems there. However, the "Testing" stage cannot be run more than once since some of those tests access the one and only shared "unit test" database; if more than 1 "testing" stage process are running, they'll end up deadlocking each other.
So how do I tell Bamboo it's OK to parallelize the "core build" stage, but for the "testing", always only run one instance at a time, no matter how many builds are running??
My approach would be to put the core build in one plan, and the testing in another plan. The core build would trigger the testing plan as a child plan.
Then as soon as the core build finishes, a testing plan would spawn.
The core build plan presumably could be set to run multiple instances in parallel on many machines. The testing plan would be limited to a single instance of the plan running at once.
My only confusion is that you said:
core build
(building VS solution, updating test database to latest scripts)
Doesn't updating the test database cause a problem for a running testing plan?