Difference between revisions of "BuildBot Configuration"

From OSGeo
Jump to navigation Jump to search
(Added Example to the BuildBot instance per project section)
Line 89: Line 89:
 
*Base directory for BuildBot instance for one project:
 
*Base directory for BuildBot instance for one project:
  
  BUILDBOTHOME/<projectname>
+
  $BUILDBOTHOME/<projectname>
 +
 
 +
where ''<projectname>'' is a placeholder for lower-case name of a project.
 +
 
 +
This path represents directory for single instance of the OSGeo BuildBot used by particular project.
 +
 
 +
Next, inside a project BuildBot instance directory, we have:
 +
 
 +
*buildmaster
 +
 
 +
$BUILDBOTHOME/<projectname>/master
 +
 
 +
*buildslave
 +
 
 +
$BUILDBOTHOME/<projectname>/slave
 +
 
 +
==== GDAL BuildBot example ====
 +
 
 +
The OSGeo BuildBot instance for GDAL project (let's call it GDAL BuildBot) is hosted inside the:
 +
 
 +
$BUILDBOTHOME/gdal
 +
 
 +
what expands to following path:
 +
 
 +
/osgeo/buildbot/gdal
 +
 
 +
The GDAL BuildBot uses single instance the buildmaster:
 +
 
 +
$BUILDBOTHOME/gdal/master
 +
 
 +
and single instance of the buildslave, local one:
 +
 
 +
$BUILDBOTHOME/gdal/slave
 +
 
 +
Next, GDAL developers can connect remote buildslaves hosted on various platforms, for exmaple on Mac OS. All buildslaves (one local and N number of remote slaves) are controlled by the GDAL BuildBot buildmaster.

Revision as of 00:38, 27 September 2006

This document attempts to discuss configuration details of the BuildBot system for OSGeo projects.

About BuildBot

The BuildBot is a system to automate the build and test cycle during a software development process.

BuildBot homepage: http://buildbot.sourceforge.net/

Thanks to Howard Butler's installation of BuildBot, we've been able to test it with some of Open Source GIS projects for a few months.

After these tests, we've found that:

  • BuildBot works very well
  • BuildBot has a very positive effect on the development of the projects
  • BuildBot an important communication channel about compilation and testing issues
  • BuildBot helps developers and users to observe a cycle of development in details
  • BuildBot decreases time needed to compile and test changes in a multiplatform environment

The main objective of this initiative is to install and configure BuildBot instances for the OSGeo projects.

Hobu's BuildBot instances

OSGeo BuildBot Configuration

Following section describes details of BuildBot infrastructure configuration hosted on one of the OSGeo servers.

Server

The OSGeo BuildBot is hosted on one of the Telascience Blades:

  • Hostname: xblade14-2
  • IP: 198.202.74.219

(add / link to details about installed development software and versions)

Basic concepts

The BuildBot system architecture is based on two base concepts:

  • buildmaster - the brain, controls single instance of BuildBot
  • buildslave - the worker, performs all builds tasks

Selected server hosts all instances of the OSGeo BuildBot infrastructure.

A single instance of BuildBot, running on the OSGeo server, consists of single buildmaster and single buildslave.

Development team of particular project is able to connect more buildslaves running on separate machines, remotely. Buildslaves are connected to the buildmaster in a star topology.

Every project gets its own instance of the OSGeo BuildBot and can connect various external buildslaves.

(add picture showing visualizing the structure of the OSGeo BuildBot infrastructure

BuildBot user

  • BuildBot runs as user
buildbot
  • Home directory for buildbot user points to:
/home/buildbot
  • Environment variables used by buildbot to run the BuildBot scripts:
BUILDBOTHOME=/home/buildbot
PYTHONPATH=$BUILDBOTHOME/usr/lib/python2.4/site-packages

See BuildBot directories section for details about BUILDBOTHOME environment variable.

BuildBot directories

Following subsection explains directories layout used by the OSGeo BuildBot infrastructure.

  • BuildBot infrastructure base directory (later referenced as BUILDBOTHOME):
/osgeo/buildbot
  • BuildBot software (Python 2.4 packages) installation prefix:
/osgeo/buildbot/usr

BuildBot instance per project

  • Base directory for BuildBot instance for one project:
$BUILDBOTHOME/<projectname>

where <projectname> is a placeholder for lower-case name of a project.

This path represents directory for single instance of the OSGeo BuildBot used by particular project.

Next, inside a project BuildBot instance directory, we have:

  • buildmaster
$BUILDBOTHOME/<projectname>/master
  • buildslave
$BUILDBOTHOME/<projectname>/slave

GDAL BuildBot example

The OSGeo BuildBot instance for GDAL project (let's call it GDAL BuildBot) is hosted inside the:

$BUILDBOTHOME/gdal

what expands to following path:

/osgeo/buildbot/gdal

The GDAL BuildBot uses single instance the buildmaster:

$BUILDBOTHOME/gdal/master

and single instance of the buildslave, local one:

$BUILDBOTHOME/gdal/slave

Next, GDAL developers can connect remote buildslaves hosted on various platforms, for exmaple on Mac OS. All buildslaves (one local and N number of remote slaves) are controlled by the GDAL BuildBot buildmaster.