コード例 #1
0
def create_factory():
    factory = BuildFactory()
    factory.addSteps(common.initTargetProperty())
    factory.addSteps(common.initNameProperty())
    factory.addStep(
        steps.Trigger(name="Call the 'build' scheduler",
                      schedulerNames=['build'],
                      waitForFinish=True,
                      haltOnFailure=True,
                      copy_properties=COMMON_PROPERTIES,
                      set_properties={
                          'virtual_builder_name':
                          util.Interpolate('Build for %(prop:box)s'),
                      }))

    factory.addStep(
        steps.Trigger(name="Call the 'run_test' scheduler",
                      schedulerNames=['run_test'],
                      waitForFinish=True,
                      copy_properties=COMMON_PROPERTIES,
                      set_properties={
                          'test_branch': util.Property('branch'),
                          "test_set": common.renderTestSet,
                          "use_valgrind": util.Property("use_valgrind"),
                          "use_callgrind": util.Property("use_callgrind"),
                          "backend_ssl": util.Property("backend_ssl")
                      }))

    return factory
コード例 #2
0
def create_factory():
    factory = BuildFactory()
    factory.addSteps(common.initTargetProperty())
    factory.addStep(
        steps.Trigger(name="Call the 'build' scheduler",
                      schedulerNames=['build'],
                      waitForFinish=True,
                      haltOnFailure=True,
                      copy_properties=COMMON_PROPERTIES,
                      set_properties={
                          'virtual_builder_name':
                          util.Interpolate('Build for %(prop:box)s'),
                          'box':
                          'ubuntu_bionic_libvirt',
                          'try_already_running':
                          'no',
                      }))

    factory.addStep(
        steps.Trigger(name="Call the 'run_performance_test' scheduler",
                      schedulerNames=['run_performance_test_trigger'],
                      waitForFinish=True,
                      copy_properties=COMMON_PROPERTIES,
                      set_properties={
                          'test_branch': util.Property('branch'),
                          'host': 'max-tst-01',
                      }))

    return factory
コード例 #3
0
def createFactory():
    factory = BuildFactory()
    factory.addSteps(common.initTargetProperty())
    factory.addStep(steps.Trigger(
        name="Call the 'build' scheduler. Build CentOS",
        schedulerNames=['build'],
        waitForFinish=True,
        haltOnFailure=True,
        copy_properties=COMMON_BUILD_AND_TEST_SNAPSHOT_PROPERTIES,
        set_properties={
            "box": util.Property("box"),
            'try_already_running': 'yes',
            "target": util.Property("target"),
            'virtual_builder_name': util.Interpolate('Build for %(prop:box)s'),
        }
    ))
    factory.addStep(steps.Trigger(
        name="Call the 'run_test_snapshot' scheduler. Run functional tests",
        schedulerNames=['run_test_snapshot'],
        waitForFinish=True,
        copy_properties=COMMON_BUILD_AND_TEST_SNAPSHOT_PROPERTIES,
        set_properties={
            "box": util.Property("box"),
            "target": util.Property("target"),
            "test_branch": util.Property("branch"),
            "test_set": common.renderTestSet,
            "backend_ssl": util.Property("backend_ssl"),
            "use_valgrind": util.Property("use_valgrind"),
        }
    ))
    return factory
コード例 #4
0
def masterConfig():
    c = {}
    from buildbot.config import BuilderConfig
    from buildbot.process.factory import BuildFactory
    from buildbot.plugins import steps, schedulers

    c['schedulers'] = [
        schedulers.Triggerable(name="trigsched", builderNames=["build"]),
        schedulers.AnyBranchScheduler(name="sched", builderNames=["testy"])
    ]

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(
        steps.Trigger(schedulerNames=['trigsched'],
                      waitForFinish=True,
                      updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    c['builders'] = [
        BuilderConfig(name="testy", workernames=["local1"], factory=f),
        BuilderConfig(name="build", workernames=["local1"], factory=f2)
    ]
    return c
コード例 #5
0
ファイル: test_stop_trigger.py プロジェクト: zanssa/buildbot
def setupTriggerConfiguration(triggeredFactory, nextBuild=None):
    c = {}

    c['schedulers'] = [
        schedulers.Triggerable(name="trigsched", builderNames=["triggered"]),
        schedulers.AnyBranchScheduler(name="sched", builderNames=["main"])
    ]

    f = BuildFactory()
    f.addStep(
        steps.Trigger(schedulerNames=['trigsched'],
                      waitForFinish=True,
                      updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))

    mainBuilder = BuilderConfig(name="main", workernames=["local1"], factory=f)

    triggeredBuilderKwargs = {
        'name': "triggered",
        'workernames': ["local1"],
        'factory': triggeredFactory
    }

    if nextBuild is not None:
        triggeredBuilderKwargs['nextBuild'] = nextBuild

    triggeredBuilder = BuilderConfig(**triggeredBuilderKwargs)

    c['builders'] = [mainBuilder, triggeredBuilder]
    return c
コード例 #6
0
def masterConfig(num_concurrent, extra_steps=None):
    if extra_steps is None:
        extra_steps = []
    c = {}

    c['schedulers'] = [
        schedulers.ForceScheduler(
            name="force",
            builderNames=["testy"])]
    triggereables = []
    for i in range(num_concurrent):
        c['schedulers'].append(
            schedulers.Triggerable(
                name="trigsched" + str(i),
                builderNames=["build"]))
        triggereables.append("trigsched" + str(i))

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(steps.Trigger(schedulerNames=triggereables,
                            waitForFinish=True,
                            updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    for step in extra_steps:
        f2.addStep(step)
    c['builders'] = [
        BuilderConfig(name="testy",
                      workernames=["marathon0"],
                      factory=f),
        BuilderConfig(name="build",
                      workernames=["marathon" + str(i)
                                   for i in range(num_concurrent)],
                      factory=f2)]
    url = os.environ.get('BBTEST_MARATHON_URL')
    creds = os.environ.get('BBTEST_MARATHON_CREDS')
    if creds is not None:
        user, password = creds.split(":")
    else:
        user = password = None
    masterFQDN = os.environ.get('masterFQDN')
    marathon_extra_config = {
    }
    c['workers'] = [
        MarathonLatentWorker('marathon' + str(i), url, user, password, 'buildbot/buildbot-worker:master',
                             marathon_extra_config=marathon_extra_config,
                             masterFQDN=masterFQDN)
        for i in range(num_concurrent)
    ]
    # un comment for debugging what happens if things looks locked.
    # c['www'] = {'port': 8080}
    # if the masterFQDN is forced (proxy case), then we use 9989 default port
    # else, we try to find a free port
    if masterFQDN is not None:
        c['protocols'] = {"pb": {"port": "tcp:9989"}}
    else:
        c['protocols'] = {"pb": {"port": "tcp:0"}}

    return c
コード例 #7
0
ファイル: test_hyper.py プロジェクト: thesurfermac/buildbot
def masterConfig(num_concurrent, extra_steps=None):
    if extra_steps is None:
        extra_steps = []
    c = {}

    c['schedulers'] = [
        schedulers.ForceScheduler(name="force", builderNames=["testy"])
    ]
    triggereables = []
    for i in range(num_concurrent):
        c['schedulers'].append(
            schedulers.Triggerable(name="trigsched" + str(i),
                                   builderNames=["build"]))
        triggereables.append("trigsched" + str(i))

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(
        steps.Trigger(schedulerNames=triggereables,
                      waitForFinish=True,
                      updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    for step in extra_steps:
        f2.addStep(step)
    c['builders'] = [
        BuilderConfig(name="testy", workernames=["hyper0"], factory=f),
        BuilderConfig(
            name="build",
            workernames=["hyper" + str(i) for i in range(num_concurrent)],
            factory=f2)
    ]
    hyperconfig = workerhyper.Hyper.guess_config()
    if isinstance(hyperconfig, string_types):
        hyperconfig = json.load(open(hyperconfig))
    hyperhost, hyperconfig = hyperconfig['clouds'].items()[0]
    masterFQDN = os.environ.get('masterFQDN')
    c['workers'] = [
        HyperLatentWorker('hyper' + str(i),
                          'passwd',
                          hyperhost,
                          hyperconfig['accesskey'],
                          hyperconfig['secretkey'],
                          'buildbot/buildbot-worker:master',
                          masterFQDN=masterFQDN) for i in range(num_concurrent)
    ]
    # un comment for debugging what happens if things looks locked.
    # c['www'] = {'port': 8080}
    # if the masterFQDN is forced (proxy case), then we use 9989 default port
    # else, we try to find a free port
    if masterFQDN is not None:
        c['protocols'] = {"pb": {"port": "tcp:9989"}}
    else:
        c['protocols'] = {"pb": {"port": "tcp:0"}}

    return c
コード例 #8
0
def masterConfig():
    c = {}
    from buildbot.config import BuilderConfig
    from buildbot.process.factory import BuildFactory
    from buildbot.plugins import steps, schedulers

    c['schedulers'] = [
        schedulers.AnyBranchScheduler(name="sched", builderNames=["testy"])
    ]
    triggereables = []
    for i in range(NUM_CONCURRENT):
        c['schedulers'].append(
            schedulers.Triggerable(name="trigsched" + str(i),
                                   builderNames=["build"]))
        triggereables.append("trigsched" + str(i))

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(
        steps.Trigger(schedulerNames=triggereables,
                      waitForFinish=True,
                      updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    c['builders'] = [
        BuilderConfig(name="testy", workernames=["hyper0"], factory=f),
        BuilderConfig(
            name="build",
            workernames=["hyper" + str(i) for i in range(NUM_CONCURRENT)],
            factory=f2)
    ]
    hyperconfig = workerhyper.Hyper.guess_config()
    if isinstance(hyperconfig, string_types):
        hyperconfig = json.load(open(hyperconfig))
    hyperhost, hyperconfig = hyperconfig['clouds'].items()[0]
    masterFQDN = os.environ.get('masterFQDN')
    c['workers'] = [
        HyperLatentWorker('hyper' + str(i),
                          'passwd',
                          hyperhost,
                          hyperconfig['accesskey'],
                          hyperconfig['secretkey'],
                          'buildbot/buildbot-worker:master',
                          masterFQDN=masterFQDN) for i in range(NUM_CONCURRENT)
    ]
    # if the masterFQDN is forced (proxy case), then we use 9989 default port
    # else, we try to find a free port
    if masterFQDN is not None:
        c['protocols'] = {"pb": {"port": "tcp:9989"}}
    else:
        c['protocols'] = {"pb": {"port": "tcp:0"}}

    return c
コード例 #9
0
def masterConfig(num_concurrent, extra_steps=None):
    if extra_steps is None:
        extra_steps = []
    c = {}

    c['schedulers'] = [
        schedulers.ForceScheduler(name="force", builderNames=["testy"])
    ]
    triggereables = []
    for i in range(num_concurrent):
        c['schedulers'].append(
            schedulers.Triggerable(
                name="trigsched" + str(i), builderNames=["build"]))
        triggereables.append("trigsched" + str(i))

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(
        steps.Trigger(
            schedulerNames=triggereables,
            waitForFinish=True,
            updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    for step in extra_steps:
        f2.addStep(step)
    c['builders'] = [
        BuilderConfig(name="testy", workernames=["kubernetes0"], factory=f),
        BuilderConfig(
            name="build",
            workernames=["kubernetes" + str(i) for i in range(num_concurrent)],
            factory=f2)
    ]
    masterFQDN = os.environ.get('masterFQDN')
    c['workers'] = [
        kubernetes.KubeLatentWorker(
            'kubernetes' + str(i),
            'buildbot/buildbot-worker',
            kube_config=kubeclientservice.KubeCtlProxyConfigLoader(
                namespace=os.getenv("KUBE_NAMESPACE", "default")),
            masterFQDN=masterFQDN) for i in range(num_concurrent)
    ]
    # un comment for debugging what happens if things looks locked.
    # c['www'] = {'port': 8080}
    c['protocols'] = {"pb": {"port": "tcp:9989"}}

    return c
コード例 #10
0
ファイル: factories.py プロジェクト: eponomar/infrastructure
    def run(self):
        """
        Create factory for this build.

        :return: util.SUCCESS or Exception
        """
        builder_steps = self.default_factory(self.build_specification, self.build.properties)
        if self.build_specification.get('next_builders'):
            builder_steps.append(
                steps.Trigger(schedulerNames=['trigger'],
                              waitForFinish=False,
                              updateSourceStamp=False,
                              doStepIf=self.is_trigger_needed))

        self.build.addStepsAfterCurrentStep(builder_steps)

        # generator is used, because logs adding may take long time
        yield self.addCompleteLog('list of steps',
                                  str('\n'.join([str(step) for step in builder_steps])))
        defer.returnValue(util.SUCCESS)
コード例 #11
0
def createBuildFactory():
    factory = util.BuildFactory()
    buildSteps = createBuildSteps()
    factory.addSteps(buildSteps)
    factory.addStep(
        steps.Trigger(name="Call the 'create_full_repo_all' scheduler",
                      schedulerNames=['create_full_repo_all_triggerable'],
                      waitForFinish=True,
                      copy_properties=[
                          "branch",
                          "repository",
                          "host",
                          "owners",
                          "version",
                      ],
                      set_properties={
                          "major_ver": getMajorVersion,
                          "target": constructTargetString
                      }))
    return factory
コード例 #12
0
def create_factory():
    factory = BuildFactory()
    factory.addSteps(common.initTargetProperty())
    factory.addSteps(common.initNameProperty())
    factory.addStep(common.determineBuildId())
    buildProperties = COMMON_PROPERTIES.copy()
    buildProperties.update({
        'virtual_builder_name':
        util.Interpolate('Build for %(prop:box)s'),
    })
    factory.addStep(
        steps.Trigger(
            name="Call the 'build' scheduler",
            schedulerNames=['build'],
            waitForFinish=True,
            set_properties=buildProperties,
        ))
    runTestProperties = COMMON_PROPERTIES.copy()
    runTestProperties.update({
        "appendTestRunId":
        util.Property("appendTestRunId"),
        "backend_ssl":
        util.Property("backend_ssl"),
        "buildHosts": ["bb-host"],
        "buildId":
        util.Property("buildId"),
        "test_branch":
        util.Property('branch'),
        "use_callgrind":
        util.Property("use_callgrind"),
        "use_valgrind":
        util.Property("use_valgrind"),
    })
    factory.addStep(
        ParallelRunTestTrigger(
            name="Call the 'run_test' for each test set",
            schedulerNames=['run_test'],
            waitForFinish=True,
            set_properties=runTestProperties,
        ))
    return factory
コード例 #13
0
def masterConfig(num_concurrent, extra_steps=None):
    if extra_steps is None:
        extra_steps = []
    c = {}

    c['schedulers'] = [
        schedulers.ForceScheduler(name="force", builderNames=["testy"])
    ]
    triggereables = []
    for i in range(num_concurrent):
        c['schedulers'].append(
            schedulers.Triggerable(name="trigsched" + str(i),
                                   builderNames=["build"]))
        triggereables.append("trigsched" + str(i))

    f = BuildFactory()
    f.addStep(steps.ShellCommand(command='echo hello'))
    f.addStep(
        steps.Trigger(schedulerNames=triggereables,
                      waitForFinish=True,
                      updateSourceStamp=True))
    f.addStep(steps.ShellCommand(command='echo world'))
    f2 = BuildFactory()
    f2.addStep(steps.ShellCommand(command='echo ola'))
    for step in extra_steps:
        f2.addStep(step)
    c['builders'] = [
        BuilderConfig(name="testy", workernames=["upcloud0"], factory=f),
        BuilderConfig(
            name="build",
            workernames=["upcloud" + str(i) for i in range(num_concurrent)],
            factory=f2)
    ]
    creds = os.environ.get('BBTEST_UPCLOUD_CREDS')
    if creds is not None:
        user, password = creds.split(":")
    else:
        raise "Cannot run this test without credentials"
    masterFQDN = os.environ.get('masterFQDN', 'localhost')
    c['workers'] = []
    for i in range(num_concurrent):
        upcloud_host_config = {
            "user_data":
            """
#!/usr/bin/env bash
groupadd -g 999 buildbot
useradd -u 999 -g buildbot -s /bin/bash -d /buildworker -m buildbot
passwd -l buildbot
apt update
apt install -y git python3 python3-dev python3-pip sudo gnupg curl
pip3 install buildbot-worker service_identity
chown -R buildbot:buildbot /buildworker
cat <<EOF >> /etc/hosts
127.0.1.1    upcloud{}
EOF
cat <<EOF >/etc/sudoers.d/buildbot
buidbot ALL=(ALL) NOPASSWD:ALL
EOF
sudo -H -u buildbot bash -c "buildbot-worker create-worker /buildworker {} upcloud{} pass"
sudo -H -u buildbot bash -c "buildbot-worker start /buildworker"
""".format(i, masterFQDN, i)
        }
        c['workers'].append(
            UpcloudLatentWorker('upcloud' + str(i),
                                api_username=user,
                                api_password=password,
                                image='Debian GNU/Linux 9 (Stretch)',
                                hostconfig=upcloud_host_config,
                                masterFQDN=masterFQDN))
    # un comment for debugging what happens if things looks locked.
    # c['www'] = {'port': 8080}
    # if the masterFQDN is forced (proxy case), then we use 9989 default port
    # else, we try to find a free port
    if masterFQDN is not None:
        c['protocols'] = {"pb": {"port": "tcp:9989"}}
    else:
        c['protocols'] = {"pb": {"port": "tcp:0"}}

    return c
コード例 #14
0
ファイル: builds.py プロジェクト: lolbot-iichan/dockerized-bb
    def getGlobalBuilders(self, platforms):
        ret = list()

        f = util.BuildFactory()
        f.workdir = ""
        f.useProgress = False
        f.addStep(
            steps.Git(
                mode="incremental",
                repourl=self.giturl,
                branch=self.branch,
                locks=[self.lock_src.access("exclusive")],
            ))
        if len(self.PATCHES):
            f.addStep(
                scummsteps.Patch(
                    base_dir=config.configuration_dir,
                    patches=self.PATCHES,
                    locks=[self.lock_src.access("exclusive")],
                ))
        if self.nightly is not None:
            # Trigger nightly scheduler to let it know the source stamp
            f.addStep(
                steps.Trigger(
                    name="Updating source stamp",
                    schedulerNames=["nightly-scheduler-{0}".format(self.name)],
                    set_properties={
                        'got_revision':
                        util.Property('got_revision', defaultWhenFalse=False),
                    },
                    updateSourceStamp=True,
                    hideStepIf=(lambda r, s: r == util.SUCCESS),
                ))
        f.addStep(
            steps.Trigger(name="Building all platforms",
                          schedulerNames=[self.names['sch-build']],
                          set_properties={
                              'got_revision':
                              util.Property('got_revision',
                                            defaultWhenFalse=False),
                              'clean':
                              util.Property('clean', defaultWhenFalse=False),
                              'package':
                              util.Property('package', defaultWhenFalse=False)
                          },
                          updateSourceStamp=True,
                          waitForFinish=True))

        ret.append(
            util.BuilderConfig(
                name=self.names['bld-fetch'],
                workernames=workers.workers_by_type['fetcher'],
                workerbuilddir="/data/src/{0}".format(self.name),
                factory=f,
                tags=["fetch", self.name],
                locks=[lock_build.access('counting')],
            ))

        if self.nightly is not None:
            f = util.BuildFactory()
            f.addStep(
                steps.Trigger(
                    name="Building all platforms",
                    schedulerNames=[self.names['sch-build']],
                    updateSourceStamp=True,
                    waitForFinish=True,
                    set_properties={
                        'got_revision':
                        util.Property('got_revision', defaultWhenFalse=False),
                        'clean':
                        True,
                        'package':
                        True,
                        # Ensure our tag is put first and is split from the others
                        'owner':
                        '  Nightly build  ',
                    }))
            ret.append(
                util.BuilderConfig(
                    name=self.names['bld-nightly'],
                    # We use fetcher worker here as it will prevent building of other stuff like if a change had happened
                    workernames=workers.workers_by_type['fetcher'],
                    workerbuilddir="/data/triggers/nightly-{0}".format(
                        self.name),
                    factory=f,
                    tags=["nightly", self.name],
                    locks=[lock_build.access('counting')]))

        snapshots_path = os.path.join(config.snapshots_dir, self.name)

        # Builder to clean packages
        f = util.BuildFactory()
        f.addStep(
            scummsteps.CleanupSnapshots(
                dstpath=snapshots_path,
                buildname=self.name,
                platformnames=[
                    platform.name for platform in platforms
                    if platform.canPackage(self)
                ],
                dry_run=util.Property("dry_run", False),
                keep_builds=getattr(config, 'snapshots_keep_builds', 14),
                obsolete=timedelta(
                    days=getattr(config, 'snapshots_obsolete_days', 30)),
                cleanup_unknown=getattr(config, 'snapshots_clean_unknown',
                                        True),
            ))
        ret.append(
            util.BuilderConfig(
                name=self.names['bld-clean'],
                workernames=workers.workers_by_type['fetcher'],
                workerbuilddir="/data/triggers/cleanup-{0}".format(self.name),
                factory=f,
                tags=["cleanup", self.name],
                locks=[lock_build.access('counting')]))

        return ret
コード例 #15
0
build_factory = util.BuildFactory()
# check out the source
checkout_step = steps.GitHub(
    repourl="git://github.com/scummvm/scummvm.git",
    mode="incremental",
    **default_step_kwargs,
)
build_factory.addStep(checkout_step)
# run the tests (note that this will require that 'trial' is installed)
build_factory.addStep(
    steps.Configure(
        command=[
            "./configure",
            "--disable-all-engines",
            "--enable-engine=director",
        ],
        env={"CXX": "ccache g++"},
        **default_step_kwargs,
    ))
build_factory.addStep(steps.Compile(command=["make"], **default_step_kwargs))

master_dir = os.path.dirname(os.path.dirname(__file__))
master_file = os.path.join(master_dir, "scummvm-binary")
worker_file = "scummvm"

build_factory.addStep(
    steps.FileUpload(workersrc=worker_file, masterdest=master_file))

build_factory.addStep(
    steps.Trigger(schedulerNames=["Director Tests"], waitForFinish=True))