示例#1
0
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
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
            ]),
    ]
示例#5
0
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
示例#6
0
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)
            ])
    ]
示例#7
0
def backend_use_ssl():
    return util.ChoiceStringParameter(name="backend_ssl",
                                      label="Backend ssl",
                                      choices=["no", "yes"],
                                      default="no")
示例#8
0
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)
示例#9
0
def host(default="bb-host"):
    """Host of the used group of workers"""
    return util.ChoiceStringParameter(name="host",
                                      label="Host",
                                      choices=workers.workerHosts(),
                                      default=default)
示例#10
0
def test_template():
    return util.ChoiceStringParameter(
        name="template",
        label="Template",
        choices=['default', 'clustrix', 'docker'],
        default='default')
示例#11
0
                           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(
示例#12
0
def backend_database():
    return util.ChoiceStringParameter(name="product",
                                      label="Product",
                                      choices=['mariadb', 'mysql', 'mdbe'],
                                      default='mariadb')
示例#13
0
def try_already_running():
    return util.ChoiceStringParameter(name="try_already_running",
                                      label="Try already running",
                                      choices=["no", "yes"],
                                      default="no")
示例#14
0
def build_box(default=constants.BOXES[0]):
    return util.ChoiceStringParameter(name="box",
                                      label="Box",
                                      choices=constants.BOXES,
                                      default=default)
示例#15
0
def use_callgrind():
    return util.ChoiceStringParameter(name="use_callgrind",
                                      label="Use callgrind",
                                      choices=["no", "yes"],
                                      default="no")
示例#16
0
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
示例#17
0
文件: master.py 项目: ostree/buildbot
     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",
示例#18
0
def keep_virtual_machines():
    return util.ChoiceStringParameter(name="do_not_destroy_vm",
                                      label="Keep virtual machines running",
                                      choices=['no', 'yes'],
                                      default='no')
示例#19
0
def smoke_tests():
    return util.ChoiceStringParameter(name="smoke",
                                      label="Run fast versions of every test",
                                      choices=["yes", "no"],
                                      default="yes")
示例#20
0
def build_experimental_features():
    return util.ChoiceStringParameter(name="build_experimental",
                                      label="Build experimental features",
                                      choices=["yes", "no"],
                                      default="yes")
示例#21
0
def big_number_of_vms():
    return util.ChoiceStringParameter(name="big",
                                      label="Use larger number of VMs",
                                      choices=["yes", "no"],
                                      default="yes")
示例#22
0
def run_upgrade_test():
    return util.ChoiceStringParameter(name="run_upgrade_test",
                                      label="Run upgrade test",
                                      choices=["no", "yes"],
                                      default="no")
示例#23
0
def use_snapshots():
    return util.ChoiceStringParameter(name="use_snapshots",
                                      label="Use snapshots",
                                      choices=["no", "yes"],
                                      default="no")
示例#24
0
def database_version():
    return util.ChoiceStringParameter(name="version",
                                      label="Version",
                                      choices=constants.DB_VERSIONS,
                                      default=constants.DB_VERSIONS[0])
示例#25
0
def do_not_revert_virtual_machines():
    return util.ChoiceStringParameter(name="no_vm_revert",
                                      label="No vm revert",
                                      choices=["no", "yes"],
                                      default="no")