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,115 +196,114 @@ 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")
command=[clob, util.Interpolate("%(prop:builddir)s/")], factory.addStep(steps.ShellCommand(
haltOnFailure=True, command=[clob, util.Interpolate("%(prop:builddir)s/")],
name="Clobber build dir")) haltOnFailure=True,
# check out the source name="Clobber build dir"))
factory.addStep(steps.Git( # check out the source
repourl='git://git.yoctoproject.org/yocto-autobuilder-helper', factory.addStep(steps.Git(
workdir=util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper"), repourl='git://git.yoctoproject.org/yocto-autobuilder-helper',
mode='incremental', workdir=util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper"),
haltOnFailure=True, mode='incremental',
name='Fetch yocto-autobuilder-helper')) haltOnFailure=True,
factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True)) name='Fetch yocto-autobuilder-helper'))
factory.addStep(steps.ShellCommand( factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True))
command=[ factory.addStep(steps.ShellCommand(
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/prepare-shared-repos"), command=[
util.Interpolate("%(prop:builddir)s/layerinfo.json"), util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/prepare-shared-repos"),
util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)), util.Interpolate("%(prop:builddir)s/layerinfo.json"),
"-p", get_publish_dest], util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)),
haltOnFailure=True, "-p", get_publish_dest],
name="Prepare shared repositories")) haltOnFailure=True,
factory.addStep(steps.SetProperty( name="Prepare shared repositories"))
property="sharedrepolocation", factory.addStep(steps.SetProperty(
value=util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)) property="sharedrepolocation",
)) 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"),
util.Interpolate("%(prop:builddir)s/build"), util.Interpolate("%(prop:builddir)s/build"),
util.Property("buildername"), util.Property("buildername"),
"-c", util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)), "-c", util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)),
"-p", util.Property("is_release")], "-p", util.Property("is_release")],
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"),
util.Interpolate("%(prop:builddir)s/build/build"), util.Interpolate("%(prop:builddir)s/build/build"),
util.Interpolate("%(prop:branch_poky)s"), util.Interpolate("%(prop:branch_poky)s"),
util.Interpolate("%(prop:repo_poky)s"), util.Interpolate("%(prop:repo_poky)s"),
"-s", get_sstate_release_number, "-s", get_sstate_release_number,
"-p", get_publish_dest, "-p", get_publish_dest,
"-u", util.URLForBuild, "-u", util.URLForBuild,
"-r", get_publish_resultdir, "-r", get_publish_resultdir,
"-q"], "-q"],
name="run-config", name="run-config",
logfiles=get_buildlogs(maxsteps), logfiles=get_buildlogs(maxsteps),
lazylogfiles=True, lazylogfiles=True,
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"),
"buildappsrcrev": "", "buildappsrcrev": "",
"deploy_artefacts": util.Property("deploy_artefacts"), "deploy_artefacts": util.Property("deploy_artefacts"),
"publish_destination": util.Property("publish_destination"), "publish_destination": util.Property("publish_destination"),
"yocto_number": util.Property("yocto_number"), "yocto_number": util.Property("yocto_number"),
"milestone_number": util.Property("milestone_number"), "milestone_number": util.Property("milestone_number"),
"rc_number": util.Property("rc_number") "rc_number": util.Property("rc_number")
} }
for repo in config.repos: for repo in config.repos:
set_props["branch_%s" % repo] = util.Property("branch_%s" % repo) set_props["branch_%s" % repo] = util.Property("branch_%s" % repo)
set_props["commit_%s" % repo] = util.Property("commit_%s" % repo) set_props["commit_%s" % repo] = util.Property("commit_%s" % repo)
set_props["repo_%s" % repo] = util.Property("repo_%s" % repo) set_props["repo_%s" % repo] = util.Property("repo_%s" % repo)
set_props["yocto_number"] = util.Property("yocto_number") set_props["yocto_number"] = util.Property("yocto_number")
set_props["milestone_number"] = util.Property("milestone_number") set_props["milestone_number"] = util.Property("milestone_number")
set_props["rc_number"] = util.Property("rc_number") set_props["rc_number"] = util.Property("rc_number")
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"),
util.Interpolate("%(prop:builddir)s/layerinfo.json"), util.Interpolate("%(prop:builddir)s/layerinfo.json"),
util.Interpolate("%(prop:sharedrepolocation)s"), util.Interpolate("%(prop:sharedrepolocation)s"),
"-p", get_publish_dest, "-p", get_publish_dest,
"-r", get_publish_name "-r", get_publish_name
], ],
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"))