Class Builder
source code
twisted.spread.jelly.Jellyable --+
|
twisted.spread.flavors.Serializable --+
|
twisted.spread.flavors.Referenceable --+
|
Builder
I manage all Builds of a given type.
Each Builder is created by an entry in the config file (the
c['builders'] list), with a number of parameters.
One of these parameters is the buildbot.process.factory.BuildFactory object that is
associated with this Builder. The factory is responsible for creating new
Build
objects. Each Build object defines when and how the build is performed,
so a new Factory or Builder should be defined to control this
behavior.
The Builder holds on to a number of base.BuildRequest objects in a list named
.buildable
. Incoming BuildRequest objects will be added to
this list, or (if possible) merged into an existing request. When a slave
becomes available, I will use my BuildFactory
to turn the
request into a new Build
object. The
BuildRequest
is forgotten, the Build
goes into
.building
while it runs. Once the build finishes, I will
discard it.
I maintain a list of available SlaveBuilders, one for each connected
slave that the slavenames
parameter says we can use. Some of
these will be idle, some of them will be busy running builds for me. If
there are multiple slaves, I can run multiple builds at once.
I also manage forced builds, progress expectation (ETA) management,
and some status delivery chores.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
twisted.internet.defer.Deferred
|
attached(self,
slave,
remote,
commands)
This is invoked by the BuildSlave when the self.slavename bot
registers their builder. |
source code
|
|
|
detached(self,
slave)
This is called when the connection to the bot is lost. |
source code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Inherited from twisted.spread.flavors.Referenceable :
jellyFor ,
remoteMessageReceived
Inherited from twisted.spread.flavors.Serializable :
processUniqueID
Inherited from twisted.spread.jelly.Jellyable :
__providedBy__ ,
getStateFor
|
|
expectations = None
hash(x)
|
|
CHOOSE_SLAVES_RANDOMLY = True
|
|
__implemented__ = <implementedBy buildbot.process.builder.Buil...
|
|
__provides__ = <zope.interface.declarations.ClassProvides obje...
|
Inherited from twisted.spread.flavors.Referenceable :
perspective
|
__init__(self,
setup,
builder_status)
(Constructor)
| source code
|
- Parameters:
setup (dict) - builder setup data, as stored in BuildmasterConfig['builders'].
Contains name, slavename(s), builddir, slavebuilddir, factory,
locks.
builder_status (buildbot.status.builder.BuilderStatus)
|
Returns the timestamp of the oldest build request for this
builder.
If there are no build requests, None is returned.
|
Suck the brain out of an old Builder.
This takes all the runtime state from an existing Builder and moves it
into ourselves. This is used when a Builder is changed in the master.cfg
file: the new Builder has a different factory, but we want all the builds
that were queued for the old one to get processed by the new one. Any
builds which are already running will keep running. The new Builder will
get as many of the old SlaveBuilder objects as it wants.
|
This is invoked by the BuildSlave when the self.slavename bot
registers their builder.
- Parameters:
- Returns:
twisted.internet.defer.Deferred
- a Deferred that fires (with 'self') when the slave-side builder
is fully attached and ready to accept commands.
|
This is called when the Build has finished (either success or
failure). Any exceptions during the build are reported with
results=FAILURE, not with an errback.
|
Mark the build as successful and update expectations for the next
build. Only call this when the build did not fail in any way that would
invalidate the time expectations generated by it. (if the compile failed
and thus terminated early, we can't use the last build to predict how
long the next one will take).
|
__implemented__
- Value:
<implementedBy buildbot.process.builder.Builder>
|
|
__provides__
- Value:
<zope.interface.declarations.ClassProvides object at 0x1539350>
|
|