[users at bb.net] Interpolating arguments to steps.Trigger?

Dan Kegel dank at kegel.com
Wed Aug 8 20:01:45 UTC 2018


Hi all,
I'm trying to use a generic factory that looks up which builders to
trigger next from a property (which in turn is set from a custom data
member in the current builder), but evidently I'm getting too fancy
and/or am confused.

@util.renderer
def getTriggerList(props):
    buildername = props.getProperty('buildername')
    for builder in c['builders']:
        if buildername == builder.name:
            return builder.users
    return []

...

    f.addStep(steps.Trigger(
        schedulerNames=getTriggerList,
        waitForFinish=False,
        alwaysUseLatest=True,
        #set_properties={"triggered_by" :
util.Interpolate('%(prop:buildername)s')}
        )
    )

First off, that fails checkconfig:

  File "master.cfg", line 246, in makeFactory
    alwaysUseLatest=True,
  File "...python3.6/site-packages/buildbot/steps/trigger.py", line
73, in __init__
    if not set(schedulerNames).issuperset(set(unimportantSchedulerNames)):
builtins.TypeError: '_Renderer' object is not iterable

so I guess deferring the list of schedulers is not allowed :-(

Second off, if I uncomment the Interpolate, that fails as well with

  File "master.cfg", line 249, in makeFactory
    set_properties={"triggered_by" : util.Interpolate('%(prop:buildername)s')}
  File ".../python3.6/site-packages/buildbot/steps/trigger.py", line
73, in __init__
    if not set(schedulerNames).issuperset(set(unimportantSchedulerNames)):
builtins.TypeError: '_Renderer' object is not iterable

I guess I can work around this by having zillions of factories, each with
a different last step, instead of one shared factory.

Or am I confused?  Is there a way to do this?

Thanks,
Dan


More information about the users mailing list