unit-testingbambooparallel-builds

"Serialize" Bamboo builds?


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:

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??


Solution

  • 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:

    Doesn't updating the test database cause a problem for a running testing plan?