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
def perf_port(default="4006"): """Maxscale port for performance tests""" return util.ChoiceStringParameter( name="perf_port", label="Maxscale port to which sysbench connects", choices=constants.PERF_PORTS, default=default)
def host(default="max-tst-01"): """Host of the used group of workers""" return util.ChoiceStringParameter( name="host", label="Host", choices=list( set(map(lambda worker: worker["host"], workers.WORKER_CREDENTIALS))), default=default)
def getLntSchedulers(): project = "lnt" lnt_builders = [ "publish-lnt-sphinx-docs", ] return [ schedulers.SingleBranchScheduler( name="lnt-scheduler", treeStableTimer=kwargs.get('treeStableTimer', None), reason="Merge to LNT github {} branch".format(filter_branch), builderNames=lnt_builders, change_filter=util.ChangeFilter(project_fn=project, branch=filter_branch)), schedulers.ForceScheduler( name="force-build-scheduler", label="Force Build", buttonName="Force Build", reason=util.ChoiceStringParameter( name="reason", label="reason:", required=True, choices=[ "Build a particular revision", "Force clean build", "Narrow down blamelist", ], default="Build a particular revision"), builderNames=lnt_builders, codebases=[ util.CodebaseParameter( codebase="", branch=util.FixedParameter(name="branch", default=_branch), revision=util.StringParameter(name="revision", label="revision:", size=45, default=''), repository=util.FixedParameter(name="repository", default=_repourl), project=util.FixedParameter(name="project", default=project)) ], properties=[ util.BooleanParameter( name="clean", label="Clean source code and build directory", default=False), util.BooleanParameter(name="clean_obj", label="Clean build directory", default=False) ]), ]
def make_force_cb(bases): cb_list = [] for b in bases: cb_list.append( util.CodebaseParameter(b, branch=util.ChoiceStringParameter( name="branch", choices=codebases[b]['branches'], default=bases[b]['default_branch']), revision=util.FixedParameter( name='revision', default=''), repository=util.FixedParameter( name='repository', default=codebases[b]['repository']), project=util.FixedParameter(name='project', default=b))) return cb_list
def getForceSchedulers(builders): # Walk over all builders and collect their names. scheduler_builders = [builder.name for builder in builders] # Create the force schedulers. return [ schedulers.ForceScheduler( name="force-build-scheduler", label="Force Build", buttonName="Force Build", reason=util.ChoiceStringParameter( name="reason", label="reason:", required=True, choices=[ "Build a particular revision", "Force clean build", "Narrow down blamelist", ], default="Build a particular revision"), builderNames=scheduler_builders, codebases=[ util.CodebaseParameter( codebase="", branch=util.FixedParameter(name="branch", default=_branch), revision=util.StringParameter(name="revision", label="revision:", size=45, default=''), repository=util.FixedParameter(name="repository", default=_repourl), project=util.FixedParameter( name="project", default="llvm" # All projects depend on llvm )) ], properties=[ util.BooleanParameter( name="clean", label="Clean source code and build directory", default=False), util.BooleanParameter(name="clean_obj", label="Clean build directory", default=False) ]) ]
def backend_use_ssl(): return util.ChoiceStringParameter(name="backend_ssl", label="Backend ssl", choices=["no", "yes"], default="no")
def perf_cnf_template(default="base.cnf.erb"): """Template for Maxscale.cnf for performance tests""" return util.ChoiceStringParameter(name="perf_cnf_template", label="Mascale.cnf template", choices=constants.PERF_CNF_TEMPLATES, default=default)
def host(default="bb-host"): """Host of the used group of workers""" return util.ChoiceStringParameter(name="host", label="Host", choices=workers.workerHosts(), default=default)
def test_template(): return util.ChoiceStringParameter( name="template", label="Template", choices=['default', 'clustrix', 'docker'], default='default')
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", # possibly unused? 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", # possibly unused? label="Poky Release Number (10.0.0, 11.0.1 etc.)"), util.StringParameter(
def backend_database(): return util.ChoiceStringParameter(name="product", label="Product", choices=['mariadb', 'mysql', 'mdbe'], default='mariadb')
def try_already_running(): return util.ChoiceStringParameter(name="try_already_running", label="Try already running", choices=["no", "yes"], default="no")
def build_box(default=constants.BOXES[0]): return util.ChoiceStringParameter(name="box", label="Box", choices=constants.BOXES, default=default)
def use_callgrind(): return util.ChoiceStringParameter(name="use_callgrind", label="Use callgrind", choices=["no", "yes"], default="no")
def ros_testbuild(c, job_name, url, branch, distro, arch, rosdistro, machines, othermirror, keys, source=True, locks=[]): # Create a Job for Source if source: project_name = '_'.join([job_name, rosdistro, 'source_build']) c['change_source'].append( GitPoller( repourl=url, name=url, branch=branch, category=project_name, pollAtLaunch=True, ) ) c['schedulers'].append( schedulers.SingleBranchScheduler( name=project_name, builderNames=[project_name,], change_filter=util.ChangeFilter(category=project_name) ) ) c['schedulers'].append( schedulers.Nightly( name = project_name+'-nightly-master', codebases = {url:{'repository':url,'branch':'master'}}, builderNames = [project_name,], hour=3, minute=0, ) ) c['schedulers'].append( schedulers.Nightly( name = project_name+'-nightly-develop', codebases = {url:{'repository':url,'branch':'develop'}}, builderNames = [project_name,], hour=5, minute=0, ) ) c['schedulers'].append( schedulers.ForceScheduler( name=project_name+'-force', codebases = [util.CodebaseParameter("", branch=util.ChoiceStringParameter( name="branch", choices=["master", "devel"], default="master"), repository=util.FixedParameter(name="repository", default=url), )], builderNames=[project_name,], ) ) else: r_owner, r_name = (url.split(':')[1])[:-4].split('/') project_name = '_'.join([job_name, rosdistro, 'pr_build']) c['change_source'].append( GitPRPoller( owner=r_owner, repo=r_name, category=project_name, branches=[branch], pollInterval=10*60, pollAtLaunch=True, token=util.Secret("OathToken"), repository_type='ssh' ) ) c['schedulers'].append( schedulers.SingleBranchScheduler( name=project_name, builderNames=[project_name,], change_filter=util.ChangeFilter(category=project_name) ) ) # Directory which will be bind-mounted binddir = '/tmp/'+project_name dockerworkdir = '/tmp/test/' f = BuildFactory() # Remove any old crud in build/src folder f.addStep( ShellCommand( name='rm src', command=['rm', '-rf', 'build/src'], hideStepIf=success, workdir=Interpolate('%(prop:builddir)s') ) ) # Check out repository (to /build/src) f.addStep( Git( repourl=util.Property('repository', default=url), branch=util.Property('branch', default=branch), alwaysUseLatest=True, mode='full', workdir=Interpolate('%(prop:builddir)s/build/src') ) ) # Download testbuild_docker.py script from master f.addStep( FileDownload( name=job_name+'-grab-script', mastersrc='scripts/testbuild_docker.py', workerdest=('testbuild_docker.py'), hideStepIf=success ) ) # Download Dockerfile_test script from master f.addStep( FileDownload( name=job_name+'-grab-script', mastersrc='docker_components/Dockerfile_test', workerdest=('Dockerfile_test'), hideStepIf=success ) ) # Download docker-compose.py script from master f.addStep( FileDownload( name=job_name+'-grab-script', mastersrc='docker_components/docker-compose-test.yaml', workerdest=('docker-compose-test.yaml'), hideStepIf=success ) ) f.addStep( FileDownload( name=job_name+'-grab-script', mastersrc='docker_components/rosdep_private.yaml', workerdest=('rosdep_private.yaml'), hideStepIf=success ) ) f.addStep( FileDownload( name=job_name+'-grab-script', mastersrc='scripts/docker-container.py', workerdest=('docker-container.py'), hideStepIf=success ) ) # create docker work environment f.addStep( ShellCommand( command=['python','docker-container.py', job_name], hideStepIf=success, workdir=Interpolate('%(prop:builddir)s/build/') ) ) # Make and run tests in a docker container f.addStep( ShellCommand( name=job_name+'-build', command=['docker', 'run', '-v', 'ros-buildbot-docker_deb_repository:/home/package', '--name='+project_name, 'scalable-env:'+job_name, 'python', '/tmp/build/testbuild_docker.py', binddir, rosdistro], descriptionDone=['make and test', job_name] ) ) f.addStep( ShellCommand( name=job_name+'-copytestresults', command=['docker', 'cp', project_name + ':' +binddir + '/testresults', 'testresults'], logfiles={'tests': 'testresults'}, descriptionDone=['testresults', job_name] ) ) f.addStep( ShellCommand( name=job_name+'-rm_container', command=['docker', 'rm', project_name], descriptionDone=['remove docker container', job_name] ) ) f.addStep( ShellCommand( name=job_name+'-rm_image', command=['docker', 'image', 'rm', 'scalable-env:'+job_name], descriptionDone=['remove docker image', job_name] ) ) c['builders'].append( BuilderConfig( name=project_name, workernames=machines, factory=f, locks=locks ) ) # return the name of the job created return project_name
label= "Produce SDKs artifacts and upload them on the buildmaster", default=False, ), util.BooleanParameter( name="reuse_sdks_artifacts", label= "Reuse SDKs artifacts instead of bootstrapping SDKs from scratch", default=True, ), util.ChoiceStringParameter( name="buildername_providing_sdks_artifacts", label= "Builder name from which retrieving SDKs artifact (latest artifacts will be used)", choices=[ *[ b.name for b in clipos_on_all_flavors_builders ], ], default=reference_clipos_builder.name, ), util.BooleanParameter( name="produce_cache_artifacts", label= "Produce cache artifacts (binary packages, etc.) and upload them on the buildmaster", default=False, ), util.BooleanParameter( name="reuse_cache_artifacts", label= "Reuse cache artifacts instead of bootstrapping SDKs from scratch",
def keep_virtual_machines(): return util.ChoiceStringParameter(name="do_not_destroy_vm", label="Keep virtual machines running", choices=['no', 'yes'], default='no')
def smoke_tests(): return util.ChoiceStringParameter(name="smoke", label="Run fast versions of every test", choices=["yes", "no"], default="yes")
def build_experimental_features(): return util.ChoiceStringParameter(name="build_experimental", label="Build experimental features", choices=["yes", "no"], default="yes")
def big_number_of_vms(): return util.ChoiceStringParameter(name="big", label="Use larger number of VMs", choices=["yes", "no"], default="yes")
def run_upgrade_test(): return util.ChoiceStringParameter(name="run_upgrade_test", label="Run upgrade test", choices=["no", "yes"], default="no")
def use_snapshots(): return util.ChoiceStringParameter(name="use_snapshots", label="Use snapshots", choices=["no", "yes"], default="no")
def database_version(): return util.ChoiceStringParameter(name="version", label="Version", choices=constants.DB_VERSIONS, default=constants.DB_VERSIONS[0])
def do_not_revert_virtual_machines(): return util.ChoiceStringParameter(name="no_vm_revert", label="No vm revert", choices=["no", "yes"], default="no")