Skip to content

jelmer/build-farm

Repository files navigation

This is the build system for build.samba.org

tridge@samba.org, April 2001
abartlet@samba.org / jelmer@samba.org, October 2010

New build machines
==================

To set up a new build machine, you need to do this:

1) create an account on the box (I'll assume its called "build")
2) copy over build_test to ~build/build_farm/
3) put the right password in ~build/build_farm/.password
4) store host specific configuration (like PATH, hostname, ...)
   in ~build/build_farm/build_test.settings.local
5) arrange for ~build/build_farm/build_test to be run regularly
   from cron
6) add the host to the buildfarm using admin.py.
7) if desired, create a HOSTNAME.fns file that defines what gets built on
   build.samba.org

Running the site
================

The current build farm site is written in Python. It
manages a directory with raw build logs that get parsed and
displayed when viewing individual builds.

A sqlite database is used to store metadata about builds
(to prevent rereading all the logs when e.g. creating
the summary page). Information about the build farm machines
and their owners can also be found in the sqlite database.

You will need to have python-storm (our ORM), sqlite
and python-dulwich (pure-Python Git implementation) installed.
We don't use any fancy webby frameworks, everything just
outputs raw HTML.

To run the web site locally, run:

 % python -m buildfarm.web.__init__

For build machine management, you can use the cli tool ./admin.py.
It should be fairly self-explanatory.

Logs are initially uploaded to data/upload/. Once they are processed
and an entry has been created in the database for them, they are
moved over to data/oldrevs/. After they have been moved they should only be
accessed when the full build log output is viewed.

There are some unit tests for the build farm objects. Run them using:

 % python -m unittest buildfarm.tests.test_suite