GitHub/Buildbot integration service

pip install bmu==0.0.1



A building maintenance unit (BMU) is an automatic, remote-controlled, or mechanical device, usually suspended from the roof, which moves systematically over some surface of a structure while carrying human window washers or mechanical robots to maintain or clean the covered surfaces.

Build Status


Also, a little Flask server modelled on Homu to trigger Buildbot builds from PRs and report statuses back to GitHub.


When running CI over a diverse codebase consisting mostly of dynamic languages, that will run on homogenous servers and be executed in (mostly) homogenous browsers, compiling code against different architectures is not necessary. However, being able to target test suites to scope of code change is useful. For example, when implementing a new JavaScript function, it doesn’t necessarily make sense to run the Python unit/functional test suite. We should fail fast. bmu allows developers to notify Buildbot which builders it needs to run by labelling their PRs.

The labels used by bmu are managed by the server and defined in its configuration file (described below).


Tell bmu about your repositories and their respective builders with a big blob of YAML.

namespace: bmu
      - python:
         - unit:
           - yellow
           - blue
         - functional
      - web

The above configuration is bmu's own (rather contrived) config. You can see in the bmcorser/bmu repo there are two branches of builders (python and web) and that the python branch has two “sub-branches” (-> unit and -> functional). The -> unit branch also has two silly nodes, yellow and blue. From this config config above, the following labels will be created:

  • bmu/*
  • bmu/python
  • bmu/python/unit
  • bmu/python/unit/yellow
  • bmu/python/unit/blue
  • bmu/python/functional
  • bmu/web

When a PR is labelled with bmu/python/unit, for example, the yellow and blue builders will be triggered.