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

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