mirror of
git://git.yoctoproject.org/yocto-autobuilder2.git
synced 2025-07-17 02:49:05 +02:00

Initial prototype of using yocto-autobuilder-helper scripts from vanilla buildbot to replicate yocto-autobuilder configuration. * README.md is updated to describe goals and approach * TODO contains known issues and work items, TODO: comments in the code point to specific locations of work Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
146 lines
5.0 KiB
Python
146 lines
5.0 KiB
Python
from buildbot.plugins import schedulers as sched
|
|
from buildbot.plugins import util
|
|
from yoctoab import config
|
|
|
|
schedulers = []
|
|
|
|
|
|
def create_repo_inputs(reponame):
|
|
"""
|
|
Given the name of a repository in yoctoab.config's repo dict creates
|
|
StringParameter inputs to allow specification of alternative uri, branch
|
|
and commit/hash values
|
|
"""
|
|
|
|
# TODO: formatting? Typically had branch & commit on same line?
|
|
repo = util.StringParameter("repo_{}".format(reponame),
|
|
label="{} repository".format(reponame),
|
|
default=config.repos[reponame][0])
|
|
branch = util.StringParameter("branch_{}".format(reponame),
|
|
label="Branch",
|
|
default=config.repos[reponame][1])
|
|
commit = util.StringParameter("commit_{}".format(reponame),
|
|
label="Tag/Commit hash",
|
|
default="HEAD")
|
|
return [repo, branch, commit]
|
|
|
|
|
|
def repos_for_builder(buildername):
|
|
"""
|
|
Returns a list of additional properties for a scheduler, a list of
|
|
StringParameter allowing all of the repositories used by the
|
|
builder/scheduler to be customised
|
|
"""
|
|
|
|
parameters = []
|
|
repos = config.buildertorepos.get(buildername)
|
|
if not repos:
|
|
repos = config.buildertorepos["default"]
|
|
for repo in repos:
|
|
inputs = create_repo_inputs(repo)
|
|
parameters = parameters + inputs
|
|
return parameters
|
|
|
|
|
|
def props_for_builder(builder):
|
|
"""
|
|
Generate an appropriate list of properties to use on a builder-specific
|
|
scheduler
|
|
"""
|
|
|
|
props = []
|
|
if builder == 'build-appliance':
|
|
props.append(util.StringParameter(
|
|
name="buildappsrcrev",
|
|
# TODO: is this statement still true?
|
|
label="""Build appliance src revision. Use DEFAULT to take the
|
|
srcrev currently in the recipe:""",
|
|
default="None",
|
|
))
|
|
if builder in ['build-appliance', 'buildtools']:
|
|
props.append(util.ChoiceStringParameter(
|
|
name="deploy_artifacts",
|
|
label="Do we want to deploy artifacts? ",
|
|
choices=["False", "True"],
|
|
default="False"
|
|
))
|
|
|
|
props = props + repos_for_builder(builder)
|
|
return props
|
|
|
|
|
|
for builder in config.triggered_builders:
|
|
schedulers.append(sched.ForceScheduler(
|
|
name=builder,
|
|
builderNames=[builder],
|
|
reason=util.StringParameter(
|
|
name="reason",
|
|
label="""Reason (please note the reason for triggering the
|
|
build and any expectations for the build's outcome:""",
|
|
required=False),
|
|
properties=props_for_builder(builder),
|
|
buttonName="Force Build"))
|
|
|
|
# nightly builder triggers various other builders
|
|
wait = sched.Triggerable(name="wait",
|
|
builderNames=config.trigger_builders_wait)
|
|
schedulers.append(wait)
|
|
nowait = sched.Triggerable(name="nowait",
|
|
builderNames=config.trigger_builders_nowait)
|
|
schedulers.append(nowait)
|
|
|
|
schedulers.append(sched.ForceScheduler(
|
|
name="nightly",
|
|
builderNames=["nightly"],
|
|
buttonName="Start Nightly Build",
|
|
reason=util.StringParameter(
|
|
name="reason",
|
|
label="""Reason (please note the reason for triggering the build and
|
|
any expectations for the build's outcome:""",
|
|
required=False),
|
|
properties=[
|
|
util.ChoiceStringParameter(
|
|
name="is_release",
|
|
label="Generate a release?",
|
|
choices=["False", "True"],
|
|
default="False"),
|
|
util.ChoiceStringParameter(
|
|
name="poky_name",
|
|
label="Name of the Poky release.",
|
|
choices=config.releases,
|
|
default=""),
|
|
util.ChoiceStringParameter(
|
|
name="is_milestone",
|
|
label="Is the release a milestone release?",
|
|
choices=["False", "True"],
|
|
default="False"),
|
|
util.StringParameter(
|
|
name="poky_number",
|
|
label="Poky Release Number (10.0.0, 11.0.1 etc.)"),
|
|
util.StringParameter(
|
|
name="yocto_number",
|
|
label="Yocto Project Release Number (1.5, 1.6 etc.)"),
|
|
util.ChoiceStringParameter(
|
|
name="milestone_number",
|
|
label="Milestone number",
|
|
choices=["", "M1", "M2", "M3", "M4"],
|
|
default=""
|
|
),
|
|
util.ChoiceStringParameter(
|
|
name="rc_number",
|
|
label="Release candidate number",
|
|
choices=["", "rc1", "rc2", "rc3", "rc4", "rc5", "rc6", "rc7",
|
|
"rc8", "rc9"],
|
|
default=""),
|
|
util.ChoiceStringParameter(
|
|
name="send_email",
|
|
label="Send QA alert emails?",
|
|
choices=["False", "True"],
|
|
default="False"),
|
|
util.ChoiceStringParameter(
|
|
name="deploy_artifacts",
|
|
label="Do we want to deploy artifacts? ",
|
|
choices=["False", "True"],
|
|
default="False")
|
|
]+repos_for_builder("nightly")))
|