[Buildbot-devel] 'try' is working!

Brian Warner warner-buildbot at lothar.com
Thu Aug 18 08:02:06 UTC 2005

Here's a transcript of a 'try' build I just ran, using two simple builders
and a TryScheduler defined with:

  c['schedulers'].append(scheduler.Try_Userpass("try", ["a", "b"],
and with a pair of Builders which only do a single unit test module each.

% buildbot try --builder a --builder b --wait
using 'pb' connect method
job created
job has been delivered
a: building [ETA 13s]
b: building [ETA 9s]

a: compile [ETA 10s]
b: shell [ETA 6s]

a: shell [ETA 7s]
b: shell [ETA 3s]

a: shell [ETA 4s]
b: success (build successful)

All Builds Complete
a: failure (failed 1 test)
b: success (build successful)

This was run from a buildbot tree with some uncommitted local changes (in
this case, an always-failing test case added that was invoked by Builder "a"
but not by Builder "b"). The 'buildbot try' command correctly identified the
base revision (using Darcs here, but the unit tests claim that it should work
for Arch, SVN, and CVS on the trunk), calculated a diff between that base
revision and my current tree, sent both to the buildmaster to trigger a
build, then waited for the status of all builds to come back. There is a bit
more configuration behind the scenes, specifically a .buildbot/options file
that contains the following entries:

 # things for 'try'
 try_connect = 'pb'
 try_master = 'localhost:8031'
 try_username = 'warner'
 try_password = 'pw'
 try_vc = 'darcs'

Having these things in .buildbot/options means you don't have to type in a
whole bunch of --connect=pb --master=localhost:8031 .. arguments on the
command line each time.

I'm committing the code that made this work tonight. The remaining tasks
between here and the 0.7.0 release are probably as follows:

 make 'try' status reporting work with the "ssh jobdir" style too. This
 example was using the "pb" style, which is slightly easier to implement.

 adapt the HTML status reporting to properly handle Schedulers. This probably
 means some quick hacks to report upcoming builds (those that are waiting for
 their tree-stable-timers to expire) in the "current activity" box on the
 Waterfall display. More changes will put off until maybe 0.7.1 or so,
 specifically code to handle the fact that Builders can now have multiple
 slaves, and new status pages for Schedulers, BuildSets, and BuildRequests.

 investigate compatibility with old buildslaves. ditto for saved BuildStatus
 objects. These are the sorts of things I do just before a release rather
 than with every intermediate version of the code.

 decide how to fix the assert() error when the buildmaster gets restarted
 abruptly and starts overwriting its old saved Build pickles. (probably by
 logging a warning and then ignoring the old files)

This feels like another week or two of work, so with luck we should have
0.7.0 in all its glory by the end of the month.

feeling accomplished tonight,

More information about the devel mailing list