Home | Trees | Index | Help |
|
---|
Package buildbot :: Package process :: Module buildstep :: Class BuildStep |
|
Dummy
,
FileDownload
,
FileUpload
,
LoggingBuildStep
I represent a single step of the build process. This step may involve zero or more commands to be run in the build slave, as well as arbitrary processing on the master side. Regardless of how many slave commands are run, the BuildStep will result in a single status value.
The step is started by calling startStep(), which returns a Deferred
that fires when the step finishes. See startStep
for a
description of the results provided by that Deferred.
__init__ and start are good methods to override. Don't forget to upcall BuildStep.__init__ or bad things will happen.
To launch a RemoteCommand, pass it to .runCommand and wait on the Deferred it returns.
Each BuildStep generates status as it runs. This status data is fed to thebuildbot.status.builder.BuildStepStatus
listener that sits in self.step_status
. It can also feed
progress data (like how much text is output by a shell command) to the buildbot.status.progress.StepProgress
object that lives in self.progress
, by calling
self.setProgress(metric, value)
as it runs.
Method Summary | |
---|---|
__init__(self,
build,
**kwargs)
| |
acquireLocks(self,
res)
| |
addCompleteLog(self,
name,
text)
| |
addHTMLLog(self,
name,
html)
| |
addLog(self,
name)
| |
addLogObserver(self,
logname,
observer)
| |
Add a BuildStep URL to this step. | |
failed(self,
why)
| |
finished(self,
results)
| |
getProperty(self,
propname)
| |
getSlaveName(self)
| |
Halt the command, either because the user has decided to cancel the build ('reason' is a string), or because the slave has disconnected ('reason' is a ConnectionLost Failure). | |
releaseLocks(self)
| |
runCommand(self,
c)
| |
BuildSteps can call self.setProgress() to announce progress along some metric. | |
setProperty(self,
propname,
value)
| |
setStepStatus(self,
step_status)
| |
setupProgress(self)
| |
Return the version number of the given slave command. | |
slaveVersionIsOlderThan(self,
command,
minversion)
| |
Begin the step. | |
Begin the step. |
Instance Variable Summary | |
---|---|
buildbot.process.base.Build |
build : the parent Build which is executing this step |
buildbot.status.progress.StepProgress |
progress : tracks ETA for the step |
buildbot.status.builder.BuildStepStatus |
step_status : collects output status |
Class Variable Summary | |
---|---|
bool |
flunkOnFailure = False
|
bool |
flunkOnWarnings = False
|
bool |
haltOnFailure = False
|
list |
locks = []
|
str |
name = 'generic'
|
list |
parms = ['build', 'name', 'locks', 'haltOnFailure', 'flu...
|
tuple |
progressMetrics = ()
|
bool |
useProgress = True
|
bool |
warnOnFailure = False
|
bool |
warnOnWarnings = False
|
Method Details |
---|
addURL(self, name, url)Add a BuildStep URL to this step. An HREF to this URL will be added to any HTML representations of this step. This allows a step to provide links to external web pages, perhaps to provide detailed HTML code coverage results or other forms of build status. |
interrupt(self, reason)Halt the command, either because the user has decided to cancel the build ('reason' is a string), or because the slave has disconnected ('reason' is a ConnectionLost Failure). Any further local processing should be skipped, and the Step completed with an error status. The results text should say something useful like ['step', 'interrupted'] or ['remote', 'lost'] |
setProgress(self, metric, value)BuildSteps can call self.setProgress() to announce progress along some metric. |
slaveVersion(self, command, oldversion=None)Return the version number of the given slave command. For the commands defined in buildbot.slave.commands, this is the value of 'cvs_ver' at the top of that file. Non-existent commands will return a value of None. Buildslaves running buildbot-0.5.0 or earlier did not respond to the version query: commands on those slaves will return a value of OLDVERSION, so you can distinguish between old buildslaves and missing commands. If you know that <=0.5.0 buildslaves have the command you want (CVS and SVN existed back then, but none of the other VC systems), then it makes sense to call this with oldversion='old'. If the command you want is newer than that, just leave oldversion= unspecified, and the command will return None for a buildslave that does not implement the command. |
start(self)Begin the step. Override this method and add code to do local processing, fire off remote commands, etc. To spawn a command in the buildslave, create a RemoteCommand instance and run it with self.runCommand:c = RemoteCommandFoo(args) d = self.runCommand(c) d.addCallback(self.fooDone).addErrback(self.failed)As the step runs, it should send status information to the BuildStepStatus: self.step_status.setColor('red') self.step_status.setText(['compile', 'failed']) self.step_status.setText2(['4', 'warnings'])To have some code parse stdio (or other log stream) in realtime, add a LogObserver subclass. This observer can use self.step.setProgress() to provide better progress notification to the step.: self.addLogObserver('stdio', MyLogObserver())To add a LogFile, use self.addLog. Make sure it gets closed when it finishes. When giving a Logfile to a RemoteShellCommand, just ask it to close the log when the command completes: log = self.addLog('output') cmd = RemoteShellCommand(args) cmd.useLog(log, closeWhenFinished=True)You can also create complete Logfiles with generated text in a single step: self.addCompleteLog('warnings', text) When the step is done, it should call self.finished(result).
'result' will be provided to the If the step encounters an exception, it should call self.failed(why). 'why' should be a Failure object. This automatically fails the whole build with an exception. It is a good idea to add self.failed as an errback to any Deferreds you might obtain. If the step decides it does not need to be run, start() can return the constant SKIPPED. This fires the callback immediately: it is not necessary to call .finished yourself. This can also indicate to the status-reporting mechanism that this step should not be displayed. |
startStep(self, remote)Begin the step. This returns a Deferred that will fire when the step finishes. This deferred fires with a tuple of (result, [extra text]), although
older steps used to return just the 'result' value, so the receiving
|
Instance Variable Details |
---|
buildthe parent Build which is executing this step
|
progresstracks ETA for the step
|
step_statuscollects output status
|
Class Variable Details |
---|
flunkOnFailure
|
flunkOnWarnings
|
haltOnFailure
|
locks
|
name
|
parms
|
progressMetrics
|
useProgress
|
warnOnFailure
|
warnOnWarnings
|
Home | Trees | Index | Help |
|
---|
Generated by Epydoc 2.1 on Sun Dec 10 22:04:45 2006 | http://epydoc.sf.net |