Difference between revisions of "Buildbot"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (minor cleanup)
Line 31: Line 31:
  
 
A few requirements must be met to add a toolchain to the buildbot server:
 
A few requirements must be met to add a toolchain to the buildbot server:
* It's possible to cross-compile the port from Linux (that might change in the future).
+
* It must be possible to cross-compile the port from Linux (that might change in the future).
 
* No custom Makefiles from the ''backend/'' folder, the port has to use the ''./configure'' script.
 
* No custom Makefiles from the ''backend/'' folder, the port has to use the ''./configure'' script.
* The compile process doesn't modify nor add anything in the source tree (The ''./configure'' script is called from another directory).
+
* The compile process must neither modify nor add anything in the source tree. All builds are performed in external build directories, by invoking the ''./configure'' script in these external directories.
* The port is fully buildable from scratch with only ''./configure'' arguments and environment variables for it.
+
* The port must be fully buildable from scratch with only ''./configure'' arguments and environment variables for it.
  
The toolchain should be maintained by the port maintainer, but since this requires a little Linux experience, its not a must ;)
+
The toolchain should be primarily maintained by the port maintainer, but since this requires a little Linux experience, its not a must ;). We will provide assistance with this where possible.
  
 
If your toolchain/port is ready to be added, ask ''sev'', ''joostp'' or ''dhewg'' for an account.
 
If your toolchain/port is ready to be added, ask ''sev'', ''joostp'' or ''dhewg'' for an account.

Revision as of 02:45, 16 March 2009

Introduction

From the buildbot homepage:

The BuildBot is a system to automate the compile/test cycle required by most software projects to validate code changes. By automatically rebuilding and testing the tree each time something has changed, build problems are pinpointed quickly, before other developers are inconvenienced by the failure. The guilty developer can be identified and harassed without human intervention. By running the builds on a variety of platforms, developers who do not have the facilities to test their changes everywhere before checkin will at least know shortly afterwards whether they have broken the build or not. Warning counts, lint checks, image size, compile time, and other build parameters can be tracked over time, are more visible, and are therefore easier to improve.
The overall goal is to reduce tree breakage and provide a platform to run tests or code-quality checks that are too annoying or pedantic for any human to waste their time with. Developers get immediate (and potentially public) feedback about their changes, encouraging them to be more careful about testing before checkin.

You can find the ScummVM buildbot page here.

Goals

  • Compile all ports when a commit is done (both trunk and the active branch) to check if it broke one or more ports.
  • Notify developers about breakage (and if a following commit fixes it again).
  • Provide useful statistics.
  • Provide nightly builds of all ports.

Status

What we have so far:

  • The bot already polls the SVN repository for changes on trunk and the current branch.
  • When a change occurs, all ports are being built incrementally.
  • Once every 24h (currently 4am CET), a full and clean rebuild is compiled for all ports.

What's missing:

  • Add more toolchains for all missing ports - when possible (see below).
  • Notify developers upon problems (IRC and/or mail is possible).
  • Provide the nightly builds via HTTP.

Toolchains

A few requirements must be met to add a toolchain to the buildbot server:

  • It must be possible to cross-compile the port from Linux (that might change in the future).
  • No custom Makefiles from the backend/ folder, the port has to use the ./configure script.
  • The compile process must neither modify nor add anything in the source tree. All builds are performed in external build directories, by invoking the ./configure script in these external directories.
  • The port must be fully buildable from scratch with only ./configure arguments and environment variables for it.

The toolchain should be primarily maintained by the port maintainer, but since this requires a little Linux experience, its not a must ;). We will provide assistance with this where possible.

If your toolchain/port is ready to be added, ask sev, joostp or dhewg for an account.