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:
nameslavenameslavenamesc['slaves'] list. Each
buildslave can accomodate multiple Builders. The slavenames parameter
can be a list of names, while slavename can specify only one slave.
factorybuildbot.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:
builddirname
with some characters escaped. Each builder must have a unique build
directory.
slavebuilddirbuilddir. 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.
categorynextSlaveBuilder
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.
nextBuildBuilder
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.
locksenvShellCommand 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'}),
]
mergeRequestsBuildRequests 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