Ejemplo n.º 1
0
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),
            )
        ])
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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),
                ))
Ejemplo n.º 4
0
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]))
Ejemplo n.º 5
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)
            ]),
    ]
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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"]),
    )
Ejemplo n.º 8
0
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")])
    ]
Ejemplo n.º 9
0
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"]),
        )
    ]
Ejemplo n.º 10
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
Ejemplo n.º 11
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)
            ])
    ]
Ejemplo n.º 12
0
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),
            )
        ])
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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))
Ejemplo n.º 15
0
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",
Ejemplo n.º 17
0
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]
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
    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
Ejemplo n.º 20
0
def emptyCodebase():
    return [util.CodebaseParameter(codebase='', hide=True)]
Ejemplo n.º 21
0
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 ],
	))
Ejemplo n.º 22
0
    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,
        ),
Ejemplo n.º 23
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