[Buildbot-devel] Setting default BuildStep values (e.g. timeout, description)
Greg Ward
gerg.ward+buildbot at gmail.com
Wed Oct 24 19:11:29 UTC 2007
I'm trying to figure out a clean way to provide default values for
BuildSteps. E.g. I think 20 min is too long as a default timeout for
ShellCommand, so I'd like to make it 5 min. From reading the Buildbot
source, I really cannot see a clean way to do this. One vile hack
that occurs to me:
DEFAULT_TIMEOUT = 300
class MyBuildFactory(BuildFactory):
def addStep(self, step):
# assume the 0.7.6 style of passing a BuildStep object in
if isinstance(step, ShellCommand) and
step.remote_kwargs.get("timeout") is None:
step.remote_kwargs["timeout"] = DEFAULT_TIMEOUT
...upcall...
Gross. I suppose I could subclass ShellCommand, override the
constructor, and tinker with its kwargs. But then what if I want to
use Buildbot-supplied ShellCommand subclasses like Configure or
Compile?
Related problem: for BuildSteps with a distinct 'description', I always do
factory.addStep(StepClass(name="do-some-stuff", description="do some
stuff", ...))
Obviously I could trivially derive description from name and save
myself some typing. I don't want to override every BuildStep class
that happens to have a 'description' attribute, so again the only
thing I can think of is to override BuildFactory.addStep():
class MyBuildFactory(BuildFactory):
def addStep(self, step):
...
if hasattr(step, 'description') and step.description is None:
step.description = step.name.split("-")
...upcall...
That's not quite as nasty as the 'timeout' hack above, so I can
probably live with it. But does anyone have a better way?
Thanks --
Greg
More information about the devel
mailing list