def prolong_scheduler(): default_project = "%s/%s" % (util.env.GIT_OWNER, util.env.GIT_SLUG) return schedulers.EveForceScheduler( name=util.env.PROLONG_SCHEDULER_NAME, builderNames=[util.env.BOOTSTRAP_BUILDER_NAME], reason=util.StringParameter(name='reason', label='Reason', default='start temporary promotion', size=20), properties=[ util.FixedParameter(name='force_stage', default='eve-prolong'), util.StringParameter(name='eve_prolongation_artifacts', label='artifacts source', default='', size=20) ], codebases=[ util.CodebaseParameter( '', branch=util.FixedParameter(name='branch', default='HEAD'), revision=util.FixedParameter(name='revision', default=''), repository=util.FixedParameter(name='repository', default=util.env.GIT_REPO), project=util.FixedParameter(name='project', default=default_project), ) ])
def __init__(self, *args, project, repository, button_name=None, label=None, **kwargs): """Improves the default form of ForceScheduler""" codebase = util.CodebaseParameter( codebase='', label='', project=util.FixedParameter(name='project', default=project), repository=util.FixedParameter(name='repository', default=repository), branch=util.StringParameter(name='branch', default='master', required=True), # required, otherwise status push reporter fails with a # non-descriptive exception revision=util.StringParameter(name='revision', default='HEAD', required=True)) kwargs['buttonName'] = button_name or f'Build {project}' kwargs['label'] = label or f'Manual {project} build' super().__init__(*args, codebases=[codebase], **kwargs)
def add_all_schedulers(cfg): for s_name in SERVICES: for branch in get_all_possible_branch_names(): realm = BRANCH_TO_REALM_MAPPING[branch] buildername = f"{s_name}_{realm}" cfg['schedulers'].append( schedulers.ForceScheduler( name=f"force-{s_name}-{realm}", codebases=[ util.CodebaseParameter( "", label="Repository", branch=util.FixedParameter(name="branch", default=branch), revision=util.StringParameter(name="revision", default=""), repository=util.FixedParameter( name="repository", default=SERVICES[s_name]['giturl']), project=util.FixedParameter(name="project", default=s_name), ) ], builderNames=[buildername], )) cfg['schedulers'].append( schedulers.SingleBranchScheduler( name=f"commit-{s_name}-{realm}", builderNames=[buildername], treeStableTimer=0, change_filter=util.ChangeFilter(branch=branch, project=s_name), ))
def add_schedulers(cfg): for branch in config['branch_deployment_configs']: realm = config['branch_deployment_configs'][branch]['namespace'] buildername = 'vs-' + realm cfg['schedulers'].append( schedulers.ForceScheduler( name="force-vs" + realm, codebases=[ util.CodebaseParameter( "", label="Repository", branch=util.FixedParameter(name="branch", default=branch), revision=util.StringParameter(name="revision", default=""), repository=util.FixedParameter( name="repository", default= "https://github.com/klaital/volunteer-savvy-backend" ), project=util.FixedParameter( name="project", default='volunteer-savvy-backend'), ) ], builderNames=[buildername]))
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 codebases_to_params(codebases): codebases_params = [] for name, defaults in codebases.items(): codebases_params.append( util.CodebaseParameter( codebase=name, repository=util.StringParameter( name='repository', default=defaults['repository']), branch=util.StringParameter(name='branch', default=defaults['branch']), revision=util.StringParameter(name='revision', default=defaults['revision']), project=None)) return codebases_params
def maxscaleDockerCodebase(): return util.CodebaseParameter( "", label="Main repository", branch=util.StringParameter( name="branch", default=constants.MAXSCALE_DOCKER_CODEBASE["branch"]), revision=util.FixedParameter( name="revision", default=constants.MAXSCALE_DOCKER_CODEBASE["revision"]), project=util.FixedParameter(name="project", default=""), repository=util.StringParameter( name="repository", default=constants.MAXSCALE_DOCKER_CODEBASE["repository"]), )
def get_schedulers(): from buildbot.schedulers.basic import SingleBranchScheduler from buildbot.schedulers.basic import AnyBranchScheduler from buildbot.schedulers.forcesched import ForceScheduler from buildbot.schedulers.forcesched import StringParameter from buildbot.schedulers.forcesched import FixedParameter from buildbot.plugins import util import builders return [ SingleBranchScheduler( name='master', reason='main repository source code modification', builderNames=['coverity'], treeStableTimer=20, change_filter=util.ChangeFilter(branch='master')), AnyBranchScheduler(name='default', reason='main repository source code modification', builderNames=builders.get_builder_names(), treeStableTimer=20), ForceScheduler( name='force', reason=StringParameter(name="reason", default="manual build", size=100), builderNames=builders.get_builder_names(), codebases=[ util.CodebaseParameter( "", label="Codebase", branch=StringParameter(name="branch", default="master", size=100), revision=StringParameter(name="revision", default="", size=100), repository=StringParameter( name="repository", default="https://github.com/SFML/SFML.git", regex=r"^https://github.com/[\w-]*/[\w-]*\.git$", size=100), project=StringParameter(name="project", default="SFML", size=100), ) ], properties=[util.FixedParameter(name="trigger", default="force")]) ]
def codebaseMdbciParameter(): return [ util.CodebaseParameter( "", label="Main repository", branch=util.StringParameter( name="branch", default=constants.MDBCI_CODEBASE[""]["branch"]), revision=util.FixedParameter( name="revision", default=constants.MDBCI_CODEBASE[""]["revision"]), project=util.FixedParameter(name="project", default=""), repository=util.StringParameter( name="repository", default=constants.MDBCI_CODEBASE[""]["repository"]), ) ]
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 force_scheduler(): default_project = "%s/%s" % (util.env.GIT_OWNER, util.env.GIT_SLUG) yaml_options = util.NestedParameter( name=None, label='Eve', fields=[ util.StringParameter(name='force_stage', label='Override stage (optional)') ]) extra_props = util.NestedParameter( name=None, label='Extra properties', fields=[ util.AnyPropertyParameter(name='prop%02d' % i) for i in range(util.env.FORCE_BUILD_PARAM_COUNT) ]) # Hack to remove ugly ':' from extra properties for prop in extra_props.fields: prop.fields[0].label = 'Name' prop.fields[1].label = 'Value' return schedulers.EveForceScheduler( name=util.env.FORCE_SCHEDULER_NAME, builderNames=[util.env.BOOTSTRAP_BUILDER_NAME], reason=util.StringParameter(name='reason', label='Reason', default='force build', size=20), properties=[yaml_options] + [extra_props], codebases=[ util.CodebaseParameter( '', label='Repository', branch=util.StringParameter(name='branch', label='Branch', required=True), revision=util.FixedParameter(name='revision', default=''), repository=util.FixedParameter(name='repository', default=util.env.GIT_REPO), project=util.FixedParameter(name='project', default=default_project), ) ])
def masterConfig(): c = {} from buildbot.config import BuilderConfig from buildbot.process.factory import BuildFactory from buildbot.plugins import steps, schedulers, util c['schedulers'] = [ schedulers.ForceScheduler( name="force", codebases=[util.CodebaseParameter("foo", patch=util.PatchParameter())], builderNames=["testy"])] f = BuildFactory() f.addStep(MySource(codebase='foo')) # if the patch was applied correctly, then make will work! f.addStep(steps.ShellCommand(command=["make"])) c['builders'] = [ BuilderConfig(name="testy", workernames=["local1"], factory=f)] return c
def _getForceScheduler(props, prefix, builderNames): pretty_branch_name = props['branch_pretty'] forceParams = [ util.CodebaseParameter( "", label="Main repository", # will generate a combo box branch=util.FixedParameter( name="branch", default=props['git_branch_name'], ), # will generate nothing in the form, but revision, repository, # and project are needed by buildbot scheduling system so we # need to pass a value ("") revision=util.FixedParameter(name="revision", default="HEAD"), repository=util.FixedParameter(name="repository", default="{{ source_repo_url }}"), project=util.FixedParameter(name="project", default=""), ), ] # Note: This is a hack, but we need a unique name for the force schedulers, and it can't have special characters in it... return schedulers.ForceScheduler( name=prefix + pretty_branch_name[0:2].replace('.', 'x'), buttonName="Force Build", label="Force Build Settings", builderNames=builderNames, codebases=forceParams, # will generate a text input reason=util.StringParameter(name="reason", label="Reason:", required=False, size=80, default=""), # in case you don't require authentication this will display # input for user to type his name username=util.UserNameParameter(label="your name:", size=80))
def add_schedulers(cfg): for branch in config['branch_to_namespace_mapping']: realm = config['branch_to_namespace_mapping'][branch] buildername = 'wwdicebot-' + realm cfg['schedulers'].append( schedulers.ForceScheduler( name="force-wwdicebot" + realm, codebases=[ util.CodebaseParameter( "", label="Repository", branch=util.FixedParameter(name="branch", default=branch), revision=util.StringParameter(name="revision", default=""), repository=util.FixedParameter( name="repository", default="https://github.com/klaital/wwdice"), project=util.FixedParameter(name="project", default='wwdicebot'), ) ], builderNames=[buildername]))
properties={ "github_repo_owner": "rsyslog", "github_repo_name": "rsyslog-pkg-rhel-centos", }, )) lc['schedulers'].append( ForceScheduler(name="pull_rsyslog_rsyslogrpm", label="1. Pull Requests-rsyslog-rsyslogrpm", builderNames=["rsyslogrpm rpmbuild"], codebases=[ util.CodebaseParameter( "", branch=util.StringParameter( name="branch", label="Pull Request Number:", required=True, default="refs/pull/<NUMBER>/head", size=80), ), ])) lc['schedulers'].append( ForceScheduler(name="forceall_rsyslog_rsyslogrpm", label="2. Force All-rsyslog-rsyslogrpm", builderNames=["rsyslogrpm rpmbuild"])) lc['schedulers'].append( SingleBranchScheduler(name="github_rsyslog-rsyslogrpm", change_filter=filter.ChangeFilter( category="pull",
from buildbot.plugins import schedulers, util from . import properties MANUAL_SCHEDULER = schedulers.ForceScheduler( name="destroy_force", buttonName="Destroy", builderNames=["destroy"], codebases=[util.CodebaseParameter(codebase='', hide=True)], properties=[ properties.build_name(), properties.host(), ]) SCHEDULERS = [MANUAL_SCHEDULER]
def get(builders): scheds = [] # pull request scheduler scheds.append( schedulers.AnyBranchScheduler( name="gr_pull_request_handler", change_filter=util.ChangeFilter(category='pull', project="gnuradio/gnuradio"), treeStableTimer=None, builderNames=[ b.name for b in builders if "control" in b.tags and "gnuradio" in b.tags and "pull" in b.tags ])) scheds.append( schedulers.AnyBranchScheduler( name="volk_pull_request_handler", change_filter=util.ChangeFilter(category='pull', project="gnuradio/volk"), treeStableTimer=None, builderNames=[ b.name for b in builders if "control" in b.tags and "volk" in b.tags and "pull" in b.tags ])) # push event scheduler def filter_for_push(change): event = change.properties.getProperty("event") project = change.properties.getProperty("project") if event == "push": return True return False scheds.append( schedulers.AnyBranchScheduler( name="commit_push_handler", change_filter=util.ChangeFilter(filter_fn=filter_for_push, project="gnuradio/gnuradio"), treeStableTimer=60, builderNames=[ b.name for b in builders if "control" in b.tags and "push" in b.tags ])) scheds.append( schedulers.ForceScheduler( name="force_pullrequest", builderNames=["pull_request_runner"], properties=[ util.StringParameter(name="github.number", label="GitHub pull request number", default="", size=80), util.StringParameter(name="github.base.ref", label="pull request base branch", default="master", size=80) ], codebases=[ util.CodebaseParameter( "", project=util.FixedParameter(name="project", default="gnuradio/gnuradio"), repository=util.FixedParameter( name="repository", default="https://github.com/gnuradio/gnuradio.git"), branch=util.StringParameter( name="branch", label="pull request branch", default="refs/pull/<PR#>/merge", size=80), revision=util.FixedParameter(name="revision", default="")) ])) scheds.append( schedulers.ForceScheduler( name="force_build", builderNames=["repo_push_runner"], codebases=[ util.CodebaseParameter( "", project=util.FixedParameter(name="project", default="gnuradio/gnuradio"), repository=util.FixedParameter( name="repository", default="https://github.com/gnuradio/gnuradio.git"), ) ])) scheds.append( schedulers.ForceScheduler( name="force_weekly", builderNames=["weekly_runner"], codebases=[ util.CodebaseParameter( "", project=util.FixedParameter(name="project", default="gnuradio/gnuradio"), repository=util.FixedParameter( name="repository", default="https://github.com/gnuradio/gnuradio.git"), branch=util.StringParameter(name="branch", label="test branch", default="master", size=80), revision=util.FixedParameter(name="revision", default="")) ])) scheds.append( schedulers.Nightly(name="timed_weekly", builderNames=["weekly_runner"], codebases={ "": { "repository": "https://github.com/gnuradio/gnuradio.git", "branch": "master", "revision": "None" } }, dayOfWeek=[0, 4], hour=4, minute=0)) scheds.extend([ schedulers.Triggerable(name="trigger_" + b.name.lstrip("build_"), builderNames=[b.name]) for b in builders if "build" in b.tags ]) scheds.extend([ schedulers.Triggerable(name="trigger_" + b.name.lstrip("test_"), builderNames=[b.name]) for b in builders if "test" in b.tags ]) return scheds
def getGlobalSchedulers(self, platforms): ret = list() change_filter = util.ChangeFilter( repository=[self.baseurl, self.giturl], branch=self.branch) # Fetch scheduler (triggered by event source) ret.append( schedulers.SingleBranchScheduler( name=self.names['sch-sb'], change_filter=change_filter, # Wait for 5 minutes before starting build treeStableTimer=300, builderNames=[self.names['bld-fetch']])) # Nightly scheduler (started by time) # It's triggered after regular builds to take note of the last fetched source # Note that build is not started by trigger # We cleanup after it because we just generated a new package if self.nightly is not None: ret.append( schedulers.NightlyTriggerable(name=self.names['sch-nightly'], branch=self.branch, builderNames=[ self.names['bld-nightly'], self.names['bld-clean'] ], hour=self.nightly[0], minute=self.nightly[1], onlyIfChanged=True)) # All compiling builders comp_builders = list(self.names['bld-platform'](p for p in platforms if p.canBuild(self))) # Global build scheduler (triggered by fetch build and nightly build) ret.append( schedulers.Triggerable(name=self.names['sch-build'], builderNames=comp_builders)) # Force schedulers if self.enable_force: ret.append( schedulers.ForceScheduler( name=self.names['sch-force-id-fetch'], buttonName=self.names['sch-force-name-fetch'], label=self.names['sch-force-name-fetch'], reason=util.StringParameter(name="reason", label="Reason:", required=True, size=80), builderNames=[self.names['bld-fetch']], codebases=[util.CodebaseParameter(codebase='', hide=True)], properties=[ util.BooleanParameter(name="clean", label="Clean", default=False), util.BooleanParameter(name="package", label="Package", default=False), ])) ret.append( schedulers.ForceScheduler( name=self.names['sch-force-id-build'], buttonName=self.names['sch-force-name-build'], label=self.names['sch-force-name-build'], reason=util.StringParameter(name="reason", label="Reason:", required=True, size=80), builderNames=comp_builders, codebases=[util.CodebaseParameter(codebase='', hide=True)], properties=[ util.BooleanParameter(name="clean", label="Clean", default=False), util.BooleanParameter(name="package", label="Package", default=False), ])) ret.append( schedulers.ForceScheduler( name=self.names['sch-force-id-clean'], buttonName=self.names['sch-force-name-clean'], label=self.names['sch-force-name-clean'], reason=util.StringParameter(name="reason", hide=True), builderNames=[self.names['bld-clean']], codebases=[util.CodebaseParameter(codebase='', hide=True)], properties=[ util.BooleanParameter(name="dry_run", label="Dry run", default=False), ])) return ret
def emptyCodebase(): return [util.CodebaseParameter(codebase='', hide=True)]
def appendBuilders( lc, szRepoOwner, szRepoProject, factoryDebian, factoryDebian9, factoryRaspbian, factoryFreebsd, factorySuse, factoryCentos6, factoryCentos7, factoryFedora23, factoryFedora64, factoryUbuntu, factoryUbuntu16, factorySolaris10x64, factorySolaris10sparc, factorySolaris11x64, factorySolaris11sparc, factoryUbuntuCron, factoryUbuntuDocker, factoryUbuntu18Docker, factoryUbuntu18on16Docker, factoryCentos7Docker): #lc['builders'].append( #BuilderConfig(name=szRepoProject + " ubuntu " + szRepoOwner, #workernames=["slave-ubuntu"], #factory=factoryUbuntu, #tags=[szRepoProject + " " + szRepoOwner], #properties={ #"github_repo_owner": szRepoOwner, #"github_repo_name": szRepoProject, #}, #)) lc['builders'].append( BuilderConfig(name=szRepoProject + " ubuntu16 " + szRepoOwner, workernames=["slave-ubuntu16"], factory=factoryUbuntu16, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " debian " + szRepoOwner, workernames=["slave-debian"], factory=factoryDebian, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " debian9 " + szRepoOwner, workernames=["slave-debian9"], factory=factoryDebian9, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " raspbian " + szRepoOwner, workernames=["slave-raspbian"], factory=factoryRaspbian, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " centos6 " + szRepoOwner, workernames=["slave-centos6"], factory=factoryCentos6, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) #lc['builders'].append( # BuilderConfig(name=szRepoProject + " centos7 " + szRepoOwner, # workernames=["vm-centos7-5-w1"], # factory=factoryCentos7, # tags=[szRepoProject + " " + szRepoOwner], # properties={ # "github_repo_owner": szRepoOwner, # "github_repo_name": szRepoProject, # }, # )) lc['builders'].append( BuilderConfig(name=szRepoProject + " freebsd12 " + szRepoOwner, workernames=["slave-freebsd12"], factory=factoryFreebsd, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " suse " + szRepoOwner, workernames=["slave-suse"], factory=factorySuse, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " solaris10sparc " + szRepoOwner, workernames=["slave-solaris10sparc"], factory=factorySolaris10sparc, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " solaris10x64 " + szRepoOwner, workernames=["slave-solaris10x64"], factory=factorySolaris10x64, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " solaris11sparc " + szRepoOwner, workernames=["slave-solaris11sparc"], factory=factorySolaris11sparc, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " solaris11x64 " + szRepoOwner, workernames=["slave-solaris11x64"], factory=factorySolaris11x64, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " docker-ubuntu16 " + szRepoOwner, workernames=["docker-ubuntu16"], factory=factoryUbuntuDocker, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " docker-ubuntu18 " + szRepoOwner, workernames=["docker-ubuntu18"], factory=factoryUbuntu18Docker, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) lc['builders'].append( BuilderConfig(name=szRepoProject + " docker-centos7 " + szRepoOwner, workernames=["docker-centos7"], factory=factoryCentos7Docker, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) # --- Cronjob only lc['builders'].append( BuilderConfig(name="cron " + szRepoProject + " ubuntu16 " + szRepoOwner, workernames=["slave-ubuntu16"], factory=factoryUbuntuCron, tags=[szRepoProject + " " + szRepoOwner], properties={ "github_repo_owner": szRepoOwner, "github_repo_name": szRepoProject, }, )) # --- lc['schedulers'].append(ForceScheduler( name="pull_" + szRepoOwner + "_" + szRepoProject, label="1. Pull Requests-" + szRepoOwner + "-" + szRepoProject, builderNames=[ szRepoProject + " ubuntu16 " + szRepoOwner ,szRepoProject + " debian " + szRepoOwner ,szRepoProject + " debian9 " + szRepoOwner ,szRepoProject + " raspbian " + szRepoOwner ,szRepoProject + " centos6 " + szRepoOwner #,szRepoProject + " centos7 " + szRepoOwner ,szRepoProject + " freebsd12 " + szRepoOwner ,szRepoProject + " suse " + szRepoOwner ,szRepoProject + " solaris10x64 " + szRepoOwner ,szRepoProject + " solaris11sparc " + szRepoOwner ,szRepoProject + " solaris10sparc " + szRepoOwner ,szRepoProject + " solaris11x64 " + szRepoOwner ,szRepoProject + " docker-ubuntu16 " + szRepoOwner ,szRepoProject + " docker-ubuntu18 " + szRepoOwner ,szRepoProject + " docker-centos7 " + szRepoOwner ], codebases=[ util.CodebaseParameter( "", branch=util.StringParameter( name="branch", label="Pull Request Number:<br>", required=True, default="refs/pull/<NUMBER>/head", size=80), ), ], )) lc['schedulers'].append(ForceScheduler( name="forceall_" + szRepoOwner + "_" + szRepoProject, label="2. Force All-" + szRepoOwner + "-" + szRepoProject, builderNames=[ szRepoProject + " ubuntu16 " + szRepoOwner ,szRepoProject + " debian " + szRepoOwner ,szRepoProject + " debian9 " + szRepoOwner ,szRepoProject + " raspbian " + szRepoOwner ,szRepoProject + " centos6 " + szRepoOwner #,szRepoProject + " centos7 " + szRepoOwner ,szRepoProject + " freebsd12 " + szRepoOwner ,szRepoProject + " suse " + szRepoOwner ,szRepoProject + " solaris10x64 " + szRepoOwner ,szRepoProject + " solaris11sparc " + szRepoOwner ,szRepoProject + " solaris10sparc " + szRepoOwner ,szRepoProject + " solaris11x64 " + szRepoOwner ,szRepoProject + " docker-ubuntu16 " + szRepoOwner ,szRepoProject + " docker-ubuntu18 " + szRepoOwner ,szRepoProject + " docker-centos7 " + szRepoOwner ], )) lc['schedulers'].append(SingleBranchScheduler( name="github_" + szRepoOwner + "_" + szRepoProject, change_filter=filter.ChangeFilter( category="pull", project=szRepoOwner + "/" + szRepoProject), builderNames=[ szRepoProject + " ubuntu16 " + szRepoOwner ,szRepoProject + " debian " + szRepoOwner ,szRepoProject + " debian9 " + szRepoOwner ,szRepoProject + " raspbian " + szRepoOwner ,szRepoProject + " centos6 " + szRepoOwner #,szRepoProject + " centos7 " + szRepoOwner ,szRepoProject + " freebsd12 " + szRepoOwner ,szRepoProject + " suse " + szRepoOwner ,szRepoProject + " solaris10x64 " + szRepoOwner ,szRepoProject + " solaris11sparc " + szRepoOwner ,szRepoProject + " solaris10sparc " + szRepoOwner ,szRepoProject + " solaris11x64 " + szRepoOwner ,szRepoProject + " docker-ubuntu16 " + szRepoOwner ,szRepoProject + " docker-ubuntu18 " + szRepoOwner ,szRepoProject + " docker-centos7 " + szRepoOwner ], )) lc['schedulers'].append(ForceScheduler( name="forceallcron_" + szRepoOwner + "_" + szRepoProject, label="3. Force All Cron-" + szRepoOwner + "-" + szRepoProject, builderNames=[ "cron " + szRepoProject + " ubuntu16 " + szRepoOwner ], ))
name='clipos-custom-build', buttonName="Start a custom build", label="Custom build", builderNames=[ clipos_ondemand_builder.name, ], codebases=[ util.CodebaseParameter( codebase='', label="CLIP OS source manifest", project='clipos', repository=util.StringParameter( name="repository", label="Manifest repository URL", default=setup.clipos_manifest_git_url, size=100, ), branch=util.StringParameter( name="branch", label="Manifest branch to use", default="master", size=50, ), revision=None, ), ], properties=[ util.FixedParameter( "buildername_providing_repo_quicksync_artifacts", default=repo_sync_builder.name, ),
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