The c['builders']
key is a list of objects giving configuration for the
Builders. For more information, See Builder. The class definition for the
builder configuration is in buildbot.config
. In the configuration file,
its use looks like:
from buildbot.config import BuilderConfig c['builders'] = [ BuilderConfig(name='quick', slavenames=['bot1', 'bot2'], factory=f_quick), BuilderConfig(name='thorough', slavename='bot1', factory=f_thorough), ]
The constructor takes the following keyword arguments:
name
slavename
slavenames
c['slaves']
list. Each
buildslave can accomodate multiple Builders. The slavenames
parameter
can be a list of names, while slavename
can specify only one slave.
factory
buildbot.process.factory.BuildFactory
instance which
controls how the build is performed. Full details appear in their own
section, See Build Factories. Parameters like the location of the CVS
repository and the compile-time options used for the build are
generally provided as arguments to the factory's constructor.
Other optional keys may be set on each Builder:
builddir
name
with some characters escaped. Each builder must have a unique build
directory.
slavebuilddir
builddir
. If a slave is connected to multiple builders
that share the same slavebuilddir
, make sure the slave is set to
run one build at a time or ensure this is fine to run multiple builds from
the same directory simultaneously.
category
nextSlave
Builder
object which is assigning a new job, and a list of BuildSlave
objects. The function should return one of the BuildSlave
objects, or None
if none of the available slaves should be
used.
nextBuild
Builder
object which is assigning a new job, and a list of BuildRequest
objects of pending builds. The function should return one of the
BuildRequest
objects, or None
if none of the pending
builds should be started.
locks
env
ShellCommand
will override
variables of the same name passed to the Builder.
For example, if you a pool of identical slaves it is often easier to manage variables like PATH from Buildbot rather than manually editing it inside of the slaves' environment.
f = factory.BuildFactory f.addStep(ShellCommand( command=['bash', './configure'])) f.addStep(Compile()) c['builders'] = [ BuilderConfig(name='test', factory=f, slavenames=['slave1', 'slave2', 'slave3', 'slave4'], env={'PATH': '/opt/local/bin:/opt/app/bin:/usr/local/bin:/usr/bin'}), ]
mergeRequests
BuildRequest
s into a single build. If False,
the Builder will never attempt to merge requests.
Merging requests helps to reduce the total number of builds, but loses information about which exact change might have caused a build problem. Requests can only be merged for compatible SourceStamps, for example two Changes that occur on the same branch, or two requests to build 'HEAD' (i.e. the latest checkin) on the same branch.
The buildmaster's c['mergeRequests']
hook function is evaluated
only if the Builder's mergeRequests
key is True, so merging
only takes place if both allow it. see Merging BuildRequests.
properties