Navigation

Buildbot is a python based application.
It tries very hard to follow the python best practices, and to make is easy to dive into the code.

We won’t try to create a full step by step how to install python on whatever distribution.
Basically what you need is just a python environment with maybe some native packages required by our dependencies.
Because those dependencies sometimes change, we keep the most up to date list in the docker file we use to manage our CI (MetaBBotDockerFile).

If you are completely new to python, the best is to first follow the tutorials that would come when you type “python virtualenv for dummies” in your favorite search engine.

This section describes how to get set up quickly to hack on the JavaScript UI.
It does not assume familiarity with Python, although a Python installation is required, as well as virtualenv.
You will also need NodeJS, and npm installed.

For Linux, as node.js is evolving very fast, distros versions are often too old, and sometimes distro maintainers make incompatible changes (i.e naming node binary nodejs instead of node)
For Ubuntu and other Debian based distros, you want to use following method:

This should have created an isolated Python environment in which you can install packages without affecting other parts of the system.
You should see (.venv) in your shell prompt, indicating the sandbox is activated.

Next, install the Buildbot-WWW and Buildbot packages using --editable, which means that they should execute from the source directory.

make frontend

This will fetch a number of dependencies from pypi, the Python package repository.
This will also fetch a bunch a bunch of node.js dependencies used for building the web application, and a bunch of client side js dependencies, with bower

Now you’ll need to create a master instance.
For a bit more detail, see the Buildbot tutorial (First Run).

If all goes well, the master will start up and begin running in the background.
As you just installed www in editable mode (aka ‘develop’ mode), setup.py did build the web site in prod mode, so the everything is minified, making it hard to debug.

When doing web development, you usually run:

cd www/base
gulp dev

This will compile the base webapp in development mode, and automatically rebuild when files change.