[Python-Dev] Automated Python testing (was Re: status of development documentation)

Jean-Paul Calderone exarkun at divmod.com
Wed Dec 28 18:36:33 CET 2005


On Wed, 28 Dec 2005 17:43:04 +0100, "\"Martin v. Löwis\"" <martin at v.loewis.de> wrote:
>Tim Peters wrote:
>> Someone sets up a "buildbot master"
>
>That's what I now did:
>
>http://www.python.org/dev/buildbot/
>
>I'm not quite sure on a number of concepts: should there
>be multiple "slaves" per "builder"? Should I have multiple
>factories? How should I pass build-machine specific information
>(like: what compiler to use) in the master, or is that a slave
>thing? How should I deal with branches?

A slave is an entity capable of performing tasks.  It can be 
asked to perform any task you like, though it may not be able 
to perform them all if it lacks some requirements.

A builder is a particular job.  It can be performed by any 
slave (so long as its requirements are met), or by multiple 
slaves.

A factory defines the work to be done by a builder.  If which 
compiler is being used is an important part of the purpose of 
a builder (for example, there might be a builder the purpose of 
which is to test a Python built with GCC 3.4 and another the 
purpose of which is to test a Python built with GCC 4.0), then 
it should be specified in the master configuration.  If it is 
not important, then it should be left as general as possible, 
to allow for the most slaves to be able to complete the task.

I have most often seen branches supported by allowing commits 
to trunk to automatically trigger a build on trunk, while 
commits to branches do not automatically trigger any builds.
Builds on branches can then be explicitly requested when a 
developer wants to know the state of their branch on various 
platforms/configurations (often before merging to trunk to 
know if they are introducing any regressions, but valuable 
at other times as well).

To support branches in this way, you want to use a PBChangeSource 
with a prefix of "trunk" and when creating build steps, specify 
a a baseURL of "svn//svn.python.org/projects/python/", and 
defaultBranch of "trunk".

>
>Anyhow, I created two "builders", both with the same "slave",
>on sparc-sun-solaris2.10, 32-bit mode, gcc. The "python-full"
>builder does "svn export", whereas the "python-quick" builder
>does "svn update". Each of these is associated with an
>AnyBranchScheduler, for both 'trunk' and 'tags/release24-maint'.
>Not sure whether this means that the 2.4 release branch
>will ever be built (as the SVN steps have a defaultBranch of
>"trunk").

I think this means tags/release24-maint won't ever be built 
automatically (I haven't used AnyBranchScheduler, and I don't 
know much about schedulers in buildbot in general).  You 
should be able to manually request a build, but for some 
reason I don't see the form for doing so on the master website 
(<http://twistedmatrix.com/buildbot/full-2.3> for an example 
of what this looks like).  I'm not sure if this is a buildbot
version problem, or if there is just another piece of 
configuration that needs to be set.

Jean-Paul


More information about the Python-Dev mailing list