[Buildbot-devel] [ANN] Buildbot-0.8.4

Dustin J. Mitchell dustin at v.igoro.us
Sun Jun 12 22:13:08 UTC 2011

Buildbot-0.8.4 and Buildbot-slave-0.8.4 are officially released and
available for download.


File checksums are as follows.  This buildbot release is signed by my
GPG public key (7F0D15B1) (available from keyservers), and the
signatures are available for download at the Google Code site.

 337a9373c8365a99d0bdb13912e3479e  buildbot-0.8.4.tar.gz
 06af30a0bc49d11047309d78e2c2e53e  buildbot-0.8.4.zip
 2ff4c922ff5787e27aaa9389dcfbbf8b  buildbot-slave-0.8.4.tar.gz
 22eecd78df978045357aef8c2b18293c  buildbot-slave-0.8.4.zip

The major project for this release was rewriting the database
interfaces to use only asynchronous queries, improving the performance
of the master dramatically.  This included using SQLAlchemy to gain
independence from the database engine - Buildbot is now tested against
SQLite, MySQL, and Postgres, and other engines are easy to add.  This
was a major change, summarized nicely by the diffstat:

   369 files changed, 35772 insertions(+), 13782 deletions(-)

This version also comes with a number of great new features, but also
some deprecations and incompatible changes; see below for details.

On other bragging points, Buildbot now has 50% test coverage and
passes pyflakes.  In particular, all of the new code added in this
release is covered.  This has already helped to prevent regressions
and ensure correct operation.  80% test coverage is the target for

0.8.5 will also incorporate the work from Buildbot's two Google Summer
of Code students, relating to user identity (Derek Hurley) and source
steps (Pradeepkumar Gayam).  After the long wait for 0.8.4, I hope to
have 0.8.5 out on an accelerated schedule - perhaps one to two months.


** `Blocker` step

A "beta" version of the Blocker step has been added; this step allows multiple
concurrent builds to be synchronized.  It is "beta" in the sense that it may
contain significant bugs, is only documented in the source code, and has an
interface that is subject to non-compatible change in later versions of
Buildbot.  See `contrib/blockertest` for a test and demonstration of the new
step's functionality.

** Deprecations, Removals, and Non-Compatible Changes

*** Init script now uses /etc/default/buildmaster for instance configuration.
Also MASTER_ENABLED used in /etc/default/buildmaster now accepts 'true|yes|1'
to enable instance and 'false|no|0' to disable(not case sensitive). Other
values will be considered as syntax error.

*** 'buildbot.status.words.IRC' now defaults to `AllowForce=False` to prevent
IRC bots from being allowed to force builds by default.

*** MasterShellCommand and all of the transfer steps now default to
haltOnFailure=True and flunkOnFailure=True

*** GitPoller's 'workdir' parameter should always be supplied; using the
default (/tmp/gitpoller_work) is deprecated and will not be supported in future

*** ChangeFilter should now be imported from `buildbot.changes.filter'; the old
import path will still work.

*** What used to be called simply 'Scheduler' should now be instantiated as
'SingleBranchScheduler', and its branch argument is mandatory.

*** The Dependent scheduler is now in its own module,
'buildbot.schedulers.dependent', although the old name will continue to work.

*** The mergeRequests parameters are now more flexible, but an incompatible
change was made: if the BuilderConfig mergeRequests argument is explicitly set
to True, then the default merge method will be used.  In earlier versions, this
configuration fell back to the global c['mergeRequests'] parameter's value.  To
avoid this, remove `mergeRequests=True` from any BuilderConfig constructor

*** The `Status.getBuildSets` method now returns its result via Deferred.

*** The `BuilderControl.getPendingBuilds` method has been renamed to
`getPendingBuildRequestControls`; `BuilderStatus.getPendingBuilds` has been
renamed to `getPendingBuildStatuses`.  Both now return their results via

*** The utility method `Builder.getOldesetRequestTime` now returns its result
via a Deferred, and that result is now a DateTime object.

*** The remote BuildSetStatus method `waitForSuccess` is no longer available.

*** The BuildRequestStatus methods `getSubmitTime` and `getSourceStamp` now
return their results via a Deferred.  The `asDict` method omits these values,
as it retuns synchronously.

*** Buildbot now uses temporary tables, which can cause problems with
replication in MySQL.  See "Database Specification" in the manual for more

** Scheduler Improvements

*** Nightly scheduler now accepts a change_filter argument

** SQLAlchemy & SQLAlchemy-Migrate

Buildbot now uses SQLAlchemy as a database abstraction layer.  This gives
greater inter-database compatibility and a more stable and reliable basis for
this core component of the framework.  SQLAlchemy-Migrate is used to manage
changes to the database schema from version to version.

*** Postgres support

Buildbot should now work with a Postgres backend just as well as it does with
MySQL or SQLite.  Buildbot is actively tested against all three backends.

** Less garish color scheme

The default color scheme for Buildbot has been modified to make it slightly
less, well, neon. Note: This will not affect already-created masters, as
their default.css file has already been created. If you currently use the
default and want to get the new version, just overwrite public_html/default.css
with the copy in this version.

More information about the devel mailing list