Search code examples
dependenciescontinuous-integrationbuildbotdiamond-problem

Configure buildbot for builders with diamond dependencies


Say, I have a project with 4 different jobs (builders):

  1. Library
  2. Binary A (dependent on Library)
  3. Binary B (dependent on Library)
  4. Package (dependent on Binary A and Binary B)

and I would like to setup Continuous Integration using BuildBot. At the moment I use Triggerable schedulers to trigger Binary A and Binary B builds once Library has been rebuilt. At the same time Triggerables are used to trigger Package build once Binary A or Binary B has been rebuilt.

This setup is works okay in case of changes made to either Binary A or Binary B. But when changes made to Library, I've got triggered builds for Binary A and Binary B. And each of them triggers Package rebuild, as a result Package has been rebuilt twice. Is there a way to overcome this issue in Buildbot?

In other words I would like to get Package to be rebuilt only once after both Binary A and Binary B has been rebuilt.


Solution

  • You can create one Builder that checks out and builds all 4 things, serially.