Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 332
marc_s Avatar asked Oct 26 '11 09:10

marc_s


Video Answer


1 Answers

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?

like image 162
jgritty Avatar answered Sep 28 '22 05:09

jgritty