config/builders/schedulers: Split nightly into quick and full targets

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2018-11-21 23:21:10 +00:00
parent 2174bcfba5
commit b7a5d4bd7a
3 changed files with 135 additions and 121 deletions

View File

@ -188,7 +188,7 @@ def create_builder_factory():
# regular builders # regular builders
f = create_builder_factory() f = create_builder_factory()
for builder in config.triggered_builders: for builder in config.subbuilders:
workers = config.builder_to_workers.get(builder, None) workers = config.builder_to_workers.get(builder, None)
if not workers: if not workers:
workers = config.builder_to_workers['default'] workers = config.builder_to_workers['default']
@ -196,23 +196,24 @@ for builder in config.triggered_builders:
workernames=workers, workernames=workers,
factory=f, env=extra_env)) factory=f, env=extra_env))
factory = util.BuildFactory() def create_parent_builder_factory(waitname):
# NOTE: Assumes that yocto-autobuilder repo has been cloned to home factory = util.BuildFactory()
# directory of the user running buildbot. # NOTE: Assumes that yocto-autobuilder repo has been cloned to home
clob = os.path.expanduser("~/yocto-autobuilder-helper/janitor/clobberdir") # directory of the user running buildbot.
factory.addStep(steps.ShellCommand( clob = os.path.expanduser("~/yocto-autobuilder-helper/janitor/clobberdir")
factory.addStep(steps.ShellCommand(
command=[clob, util.Interpolate("%(prop:builddir)s/")], command=[clob, util.Interpolate("%(prop:builddir)s/")],
haltOnFailure=True, haltOnFailure=True,
name="Clobber build dir")) name="Clobber build dir"))
# check out the source # check out the source
factory.addStep(steps.Git( factory.addStep(steps.Git(
repourl='git://git.yoctoproject.org/yocto-autobuilder-helper', repourl='git://git.yoctoproject.org/yocto-autobuilder-helper',
workdir=util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper"), workdir=util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper"),
mode='incremental', mode='incremental',
haltOnFailure=True, haltOnFailure=True,
name='Fetch yocto-autobuilder-helper')) name='Fetch yocto-autobuilder-helper'))
factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True)) factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True))
factory.addStep(steps.ShellCommand( factory.addStep(steps.ShellCommand(
command=[ command=[
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/prepare-shared-repos"), util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/prepare-shared-repos"),
util.Interpolate("%(prop:builddir)s/layerinfo.json"), util.Interpolate("%(prop:builddir)s/layerinfo.json"),
@ -220,13 +221,13 @@ factory.addStep(steps.ShellCommand(
"-p", get_publish_dest], "-p", get_publish_dest],
haltOnFailure=True, haltOnFailure=True,
name="Prepare shared repositories")) name="Prepare shared repositories"))
factory.addStep(steps.SetProperty( factory.addStep(steps.SetProperty(
property="sharedrepolocation", property="sharedrepolocation",
value=util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)) value=util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir))
)) ))
# shared-repo-unpack # shared-repo-unpack
factory.addStep(steps.ShellCommand( factory.addStep(steps.ShellCommand(
command=[ command=[
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/shared-repo-unpack"), util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/shared-repo-unpack"),
util.Interpolate("%(prop:builddir)s/layerinfo.json"), util.Interpolate("%(prop:builddir)s/layerinfo.json"),
@ -237,18 +238,18 @@ factory.addStep(steps.ShellCommand(
haltOnFailure=True, haltOnFailure=True,
name="Unpack shared repositories")) name="Unpack shared repositories"))
factory.addStep(steps.SetPropertyFromCommand(command=util.Interpolate("cd %(prop:sharedrepolocation)s/poky; git rev-parse HEAD"), factory.addStep(steps.SetPropertyFromCommand(command=util.Interpolate("cd %(prop:sharedrepolocation)s/poky; git rev-parse HEAD"),
property="yp_build_revision", property="yp_build_revision",
haltOnFailure=True, haltOnFailure=True,
name='Set build revision')) name='Set build revision'))
factory.addStep(steps.SetPropertyFromCommand(command=util.Interpolate("cd %(prop:sharedrepolocation)s/poky; git rev-parse --abbrev-ref HEAD"), factory.addStep(steps.SetPropertyFromCommand(command=util.Interpolate("cd %(prop:sharedrepolocation)s/poky; git rev-parse --abbrev-ref HEAD"),
property="yp_build_branch", property="yp_build_branch",
haltOnFailure=True, haltOnFailure=True,
name='Set build branch')) name='Set build branch'))
# run-config # run-config
factory.addStep(RunConfigLogObserver( factory.addStep(RunConfigLogObserver(
command=[ command=[
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/run-config"), util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/run-config"),
util.Property("buildername"), util.Property("buildername"),
@ -266,8 +267,8 @@ factory.addStep(RunConfigLogObserver(
maxsteps=maxsteps, maxsteps=maxsteps,
timeout=16200)) # default of 1200s/20min is too short, use 4.5hrs timeout=16200)) # default of 1200s/20min is too short, use 4.5hrs
# trigger the buildsets contained in the nightly set # trigger the buildsets contained in the nightly set
def get_props_set(): def get_props_set():
set_props = { set_props = {
"sharedrepolocation": util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)), "sharedrepolocation": util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)),
"is_release": util.Property("is_release"), "is_release": util.Property("is_release"),
@ -289,11 +290,11 @@ def get_props_set():
return set_props return set_props
factory.addStep(steps.Trigger(schedulerNames=['wait'], factory.addStep(steps.Trigger(schedulerNames=[waitname],
waitForFinish=True, waitForFinish=True,
set_properties=get_props_set())) set_properties=get_props_set()))
factory.addStep(steps.ShellCommand( factory.addStep(steps.ShellCommand(
command=[ command=[
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/send-qa-email"), util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/send-qa-email"),
util.Property("send_email"), util.Property("send_email"),
@ -304,7 +305,5 @@ factory.addStep(steps.ShellCommand(
], ],
name="Send QA Email")) name="Send QA Email"))
builders.append( builders.append(util.BuilderConfig(name="quick", workernames=config.workers, factory=create_parent_builder_factory("wait-quick"), env=extra_env))
util.BuilderConfig(name="nightly", builders.append(util.BuilderConfig(name="full", workernames=config.workers, factory=create_parent_builder_factory("wait-full"), env=extra_env))
workernames=config.workers,
factory=factory, env=extra_env))

View File

@ -3,7 +3,10 @@
buildertorepos = { buildertorepos = {
"eclipse-plugin-neon": ["eclipse-poky-neon"], "eclipse-plugin-neon": ["eclipse-poky-neon"],
"eclipse-plugin-oxygen": ["eclipse-poky-oxygen"], "eclipse-plugin-oxygen": ["eclipse-poky-oxygen"],
"nightly": ["poky", "meta-intel", "oecore", "bitbake", "quick": ["poky", "meta-intel", "oecore", "bitbake",
"eclipse-poky-neon", "eclipse-poky-oxygen", "meta-qt4",
"meta-qt3", "meta-mingw", "meta-gplv2"],
"full": ["poky", "meta-intel", "oecore", "bitbake",
"eclipse-poky-neon", "eclipse-poky-oxygen", "meta-qt4", "eclipse-poky-neon", "eclipse-poky-oxygen", "meta-qt4",
"meta-qt3", "meta-mingw", "meta-gplv2"], "meta-qt3", "meta-mingw", "meta-gplv2"],
"non-gpl3": ["poky", "meta-gplv2"], "non-gpl3": ["poky", "meta-gplv2"],
@ -35,16 +38,16 @@ repos = {
"meta-gplv2": ["git://git.yoctoproject.org/meta-gplv2", "master"] "meta-gplv2": ["git://git.yoctoproject.org/meta-gplv2", "master"]
} }
trigger_builders_wait = [ trigger_builders_wait_quick = [
"qemuarm", "qemuarm-lsb", "qemuarm64", "qemuarm-oecore", "qemuarm", "qemuarm-lsb", "qemuarm64", "qemuarm-oecore",
"qemumips", "qemumips-lsb", "qemumips64", "qemumips", "qemumips64",
"multilib", "multilib",
"qemuppc", "qemuppc-lsb", "qemuppc",
"qemux86", "qemux86-lsb", "qemux86", "qemux86-lsb",
"qemux86-64", "qemux86-64-lsb", "qemux86-64", "qemux86-64-lsb",
"qemux86-64-x32", "qemux86-world", "qemux86-world-lsb", "qemux86-64-x32", "qemux86-world",
"edgerouter", "edgerouter-lsb", "edgerouter",
"mpc8315e-rdb", "mpc8315e-rdb-lsb", "mpc8315e-rdb",
"genericx86", "genericx86-lsb", "genericx86", "genericx86-lsb",
"genericx86-64", "genericx86-64-lsb", "genericx86-64", "genericx86-64-lsb",
"beaglebone", "beaglebone-lsb", "beaglebone", "beaglebone-lsb",
@ -57,8 +60,12 @@ trigger_builders_wait = [
"check-layer" "check-layer"
] ]
triggered_builders = trigger_builders_wait trigger_builders_wait_full = [
builders = ["nightly"] + triggered_builders "qemumips-lsb", "edgerouter-lsb", "mpc8315e-rdb-lsb", "qemuppc-lsb", "qemux86-world-lsb"
]
subbuilders = trigger_builders_wait_quick + trigger_builders_wait_full
builders = ["quick", "full"]
# ## Cluster configuration # ## Cluster configuration
# Publishing settings # Publishing settings

View File

@ -68,7 +68,7 @@ def props_for_builder(builder):
return props return props
for builder in config.triggered_builders: for builder in config.subbuilders:
schedulers.append(sched.ForceScheduler( schedulers.append(sched.ForceScheduler(
name=builder, name=builder,
builderNames=[builder], builderNames=[builder],
@ -81,14 +81,18 @@ for builder in config.triggered_builders:
buttonName="Force Build")) buttonName="Force Build"))
# nightly builder triggers various other builders # nightly builder triggers various other builders
wait = sched.Triggerable(name="wait", wait_quick = sched.Triggerable(name="wait-quick",
builderNames=config.trigger_builders_wait) builderNames=config.trigger_builders_wait_quick)
schedulers.append(wait) schedulers.append(wait_quick)
wait_full = sched.Triggerable(name="wait-full",
builderNames=config.trigger_builders_wait_quick + config.trigger_builders_wait_full)
schedulers.append(wait_full)
schedulers.append(sched.ForceScheduler( def parent_scheduler(target):
name="nightly", return sched.ForceScheduler(
builderNames=["nightly"], name=target,
buttonName="Start Nightly Build", builderNames=[target],
buttonName="Start " + target + " Build",
codebases = [util.CodebaseParameter(codebase='', label="yocto-autobuilder-helper:", project=None)], codebases = [util.CodebaseParameter(codebase='', label="yocto-autobuilder-helper:", project=None)],
reason=util.StringParameter( reason=util.StringParameter(
name="reason", name="reason",
@ -236,4 +240,8 @@ schedulers.append(sched.ForceScheduler(
name="deploy_artefacts", name="deploy_artefacts",
label="Do we want to save build output? ", label="Do we want to save build output? ",
default=False) default=False)
]+repos_for_builder("nightly"))) ]+repos_for_builder(target))
schedulers.append(parent_scheduler("quick"))
schedulers.append(parent_scheduler("full"))