raise ValidationError("'%s' does not belong to list of available choices '%s'" % (s, self._choice_list))
return s
+@util.renderer
+@defer.inlineCallbacks
+def builderNames(props):
+ """ since we have per branch and per target builders,
+ address the relevant builder for each new buildrequest
+ based on the request's desired branch and target.
+ """
+ branch = props.getProperty("branch")
+ target = props.getProperty("target", "")
+
+ if target == "all":
+ target = ""
+
+ # if that didn't work, try sourcestamp to find a branch
+ if not branch:
+ # match builders with target branch
+ ss = props.sourcestamps[0]
+ if ss:
+ branch = ss['branch']
+ else:
+ log.msg("couldn't find builder")
+ return [] # nothing works
+
+ bname = branch + "_" + target
+ builders = []
+
+ for b in (yield props.master.data.get(('builders',))):
+ if not b['name'].startswith(bname):
+ continue
+ builders.append(b['name'])
+
+ return builders
+
c['schedulers'] = []
c['schedulers'].append(AnyBranchScheduler(
name = "all",
change_filter = util.ChangeFilter(branch=branchNames),
treeStableTimer = 15*60,
- builderNames = list(targets)))
+ builderNames = builderNames))
c['schedulers'].append(ForceScheduler(
name = "force",
]
))
+c['schedulers'].append(schedulers.Triggerable(name="trigger", builderNames=builderNames))
+
####### BUILDERS
# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
c['workers'].append(LocalWorker("__local_force_build", max_builds=1))
force_factory = BuildFactory()
+force_factory.addStep(steps.Trigger(
+ name = "trigger_build",
+ schedulerNames = [ "trigger" ],
+ sourceStamps = [{ "codebase": "", "branch": Property("force_branch"), "revision": Property("force_revision"), "repository": repo_url, "project": "" }],
+ set_properties = { "reason": Property("reason"), "tag": Property("tag"), "target": Property("target") },
+))
c['builders'].append(BuilderConfig(
name = "00_force_build",
hideStepIf = lambda r, s: r==results.FAILURE,
))
- c['builders'].append(BuilderConfig(name=target, workernames=workerNames, factory=factory, nextBuild=GetNextBuild))
-
- c['schedulers'].append(schedulers.Triggerable(name="trigger_%s" % target, builderNames=[ target ]))
- force_factory.addStep(steps.Trigger(
- name = "trigger_%s" % target,
- description = "Triggering %s build" % target,
- schedulerNames = [ "trigger_%s" % target ],
- sourceStamps = [{ "codebase": "", "branch": Property("force_branch"), "revision": Property("force_revision"), "repository": repo_url, "project": "" }],
- set_properties = { "reason": Property("reason"), "tag": Property("tag"), },
- doStepIf = IsTargetSelected(target),
- ))
+ for brname in branchNames:
+ bldrname = brname + "_" + target
+ c['builders'].append(BuilderConfig(name=bldrname, workernames=workerNames, factory=factory, nextBuild=GetNextBuild))
####### STATUS TARGETS