Skip to content

Instantly share code, notes, and snippets.

@dragon512
Created June 20, 2017 19:03
Show Gist options
  • Save dragon512/98ab293557943d04c00715f2c015cd64 to your computer and use it in GitHub Desktop.
Save dragon512/98ab293557943d04c00715f2c015cd64 to your computer and use it in GitHub Desktop.
dynamic builder
class TriggerNewBuilder(steps.Trigger, ShellMixin):
@defer.inlineCallbacks
def getSchedulersAndProperties(self):
self.stdio_log = yield self.addLog("Generating builder")
self.stdio_log.addHeader("** Generating builders **\n")
self.ret = []
props = self.set_properties.copy()
props["virtual_builder_name"] = "virtual-1"
props["virtual_builder_description"] = "This is dynamic build 1"
props["virtual_builder_tags"] = ["virtual-TAG1"]
props["workername"] = worker_names[0]
self.ret.append(["build", props])
props = self.set_properties.copy()
props["virtual_builder_name"] = "virtual-2"
props["virtual_builder_description"] = "This is dynamic build 2"
props["virtual_builder_tags"] = ["virtual-TAG2"]
props["workername"] = worker_names[1]
self.ret.append(["build", props])
# yield self.ret
defer.returnValue(self.ret)
worker_names = ['worker-1', 'worker-2']
workers = [worker.LocalWorker(bot) for bot in worker_names]
c['workers'] = [
worker.LocalWorker('base'),
] + workers
c['schedulers'] = []
c['schedulers'].append(schedulers.ForceScheduler(
name="force",
builderNames=["base-builder"]))
c['schedulers'].append(schedulers.Triggerable(
name="build", builderNames=["gen_builder"]))
factory.addStep(TriggerNewBuilder(
schedulerNames=['build'], waitForFinish=True, updateSourceStamp=True))
c['builders'] = []
c['builders'].append(
util.BuilderConfig(name="base-builder",
workernames=["base"],
tags=['base'],
factory=factory
c['builders'].append(
util.BuilderConfig(
name="gen_builder",
collapseRequests=False,
workernames=[bot for bot in worker_names],
tags=['gen-tag'],
factory=gen_factory))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment