Example #1
0
def main(configs, http_config, file_config):
    if not configs:
        raise Exception(
            "Bazel publish binaries pipeline configuration is empty.")

    for platform in configs.copy():
        if platform not in PLATFORMS:
            raise Exception("Unknown platform '{}'".format(platform))
        if not PLATFORMS[platform]["publish_binary"]:
            del configs[platform]

    if set(configs) != set(name for name, platform in PLATFORMS.items()
                           if platform["publish_binary"]):
        raise Exception(
            "Bazel publish binaries pipeline needs to build Bazel for every commit on all publish_binary-enabled platforms."
        )

    # Build Bazel
    pipeline_steps = []

    for platform in configs:
        pipeline_steps.append(
            bazel_build_step(platform,
                             "Bazel",
                             http_config,
                             file_config,
                             build_only=True))

    pipeline_steps.append("wait")

    # If all builds succeed, publish the Bazel binaries to GCS.
    pipeline_steps.append(
        create_step(
            label="Publish Bazel Binaries",
            commands=[
                fetch_bazelcipy_command(),
                python_binary() + " bazelci.py publish_binaries"
            ],
        ))

    print(yaml.dump({"steps": pipeline_steps}))
c = BuildmasterConfig = {}
c['slavePortnum'] = 9010

from buildbot.status.html import WebStatus
c['status'] = [
        WebStatus(http_port=8010, allowForce=True)
]

c['buildbotURL'] = 'http://talos-addon-master1.amotest.scl1.mozilla.com:8010/'

from buildbot import manhole
c['manhole'] = manhole.PasswordManhole("tcp:1235:interface=127.0.0.1", "cltbld", "password")

from config import BRANCHES, PLATFORMS, PROJECTS
# Do everything!
ACTIVE_BRANCHES = BRANCHES.keys()
# I changed my mind; do only trunk
ACTIVE_BRANCHES = ['addontester', 'addonbaselinetester']
ACTIVE_PROJECTS = [] #PROJECTS.keys()
ACTIVE_PLATFORMS = dict((k,None) for k in PLATFORMS.keys())
c = BuildmasterConfig = {}
c['slavePortnum'] = 9008 # No slaves should be connecting here

from buildbot import manhole
c['manhole'] = manhole.PasswordManhole("tcp:1233:interface=127.0.0.1", "cltbld", "password")

from config import BRANCHES, PLATFORMS, PROJECTS
# Do everything!
ACTIVE_BRANCHES = BRANCHES.keys()
ACTIVE_PLATFORMS = dict((platform, None) for platform in PLATFORMS.keys())
ACTIVE_PROJECTS = PROJECTS.keys()
def main(argv=None):
    if argv is None:
        argv = sys.argv[1:]

    parser = argparse.ArgumentParser(description="Bazel Culprit Finder Script")

    subparsers = parser.add_subparsers(dest="subparsers_name")

    subparsers.add_parser("culprit_finder")

    runner = subparsers.add_parser("runner")
    runner.add_argument("--project_name", type=str)
    runner.add_argument("--platform_name", type=str)
    runner.add_argument("--good_bazel_commit", type=str)
    runner.add_argument("--bad_bazel_commit", type=str)
    runner.add_argument("--needs_clean", type=bool, nargs="?", const=True)

    args = parser.parse_args(argv)

    if args.subparsers_name == "culprit_finder":
        try:
            project_name = os.environ["PROJECT_NAME"]
            platform_name = os.environ["PLATFORM_NAME"]
            good_bazel_commit = os.environ["GOOD_BAZEL_COMMIT"]
            bad_bazel_commit = os.environ["BAD_BAZEL_COMMIT"]
        except KeyError as e:
            raise Exception("Environment variable %s must be set" % str(e))

        needs_clean = False
        if "NEEDS_CLEAN" in os.environ:
            needs_clean = True

        if project_name not in DOWNSTREAM_PROJECTS:
            raise Exception(
                "Project name '%s' not recognized, available projects are %s"
                % (project_name, str((DOWNSTREAM_PROJECTS.keys())))
            )

        if platform_name not in PLATFORMS:
            raise Exception(
                "Platform name '%s' not recognized, available platforms are %s"
                % (platform_name, str((PLATFORMS.keys())))
            )
        print_culprit_finder_pipeline(
            project_name=project_name,
            platform_name=platform_name,
            good_bazel_commit=good_bazel_commit,
            bad_bazel_commit=bad_bazel_commit,
            needs_clean=needs_clean,
        )
    elif args.subparsers_name == "runner":
        git_repo_location = clone_git_repository_for_project(args.project_name, args.platform_name)
        print_collapsed_group("Check good bazel commit " + args.good_bazel_commit)
        if not test_with_bazel_at_commit(
            project_name=args.project_name,
            platform_name=args.platform_name,
            git_repo_location=git_repo_location,
            bazel_commit=args.good_bazel_commit,
            needs_clean=args.needs_clean,
        ):
            raise Exception(
                "Given good commit (%s) is not actually good, abort bisecting."
                % args.good_bazel_commit
            )
        start_bisecting(
            project_name=args.project_name,
            platform_name=args.platform_name,
            git_repo_location=git_repo_location,
            commits_list=get_bazel_commits_between(args.good_bazel_commit, args.bad_bazel_commit),
            needs_clean=args.needs_clean,
        )
    else:
        parser.print_help()
        return 2

    return 0
Example #5
0
from buildbot.util import json
from buildbot import manhole

master_config = json.load(open('master_config.json'))

c = BuildmasterConfig = {}
c['slavePortnum'] = master_config.get('pb_port', None)

if 'ssh_port' in master_config:
    c['manhole'] = manhole.PasswordManhole(
        "tcp:%(ssh_port)i:interface=127.0.0.1" % master_config, "cltbld",
        "password")

from config import BRANCHES, PLATFORMS, PROJECTS
import thunderbird_config
import mobile_config
# Do everything!
ACTIVE_BRANCHES = BRANCHES.keys()
ACTIVE_THUNDERBIRD_BRANCHES = thunderbird_config.BRANCHES.keys()
ACTIVE_MOBILE_BRANCHES = mobile_config.BRANCHES.keys()
ACTIVE_PLATFORMS = dict((platform, None) for platform in PLATFORMS.keys())
ACTIVE_THUNDERBIRD_PLATFORMS = dict(
    (platform, None) for platform in thunderbird_config.PLATFORMS.keys())
ACTIVE_MOBILE_PLATFORMS = dict(
    (platform, None) for platform in mobile_config.PLATFORMS.keys())
ACTIVE_PROJECTS = PROJECTS.keys()

QUEUEDIR = "/dev/shm/queue"
Example #6
0
from config import BRANCHES, PLATFORMS, PROJECTS
import thunderbird_config
import b2g_config
from b2g_config import PROJECTS as B2G_PROJECTS
import mobile_config
# Do everything!
ACTIVE_BRANCHES = BRANCHES.keys()
ACTIVE_THUNDERBIRD_BRANCHES = thunderbird_config.BRANCHES.keys()
ACTIVE_B2G_BRANCHES = b2g_config.BRANCHES.keys()
ACTIVE_MOBILE_BRANCHES = mobile_config.BRANCHES.keys()
if 'limit_fx_platforms' in master_config:
    ACTIVE_PLATFORMS = dict(
        (p, None) for p in master_config['limit_fx_platforms'])
else:
    ACTIVE_PLATFORMS = dict((k, None) for k in PLATFORMS.keys())
if 'limit_fx_slave_platforms' in master_config:
    ACTIVE_FX_SLAVE_PLATFORMS = master_config['limit_fx_slave_platforms']
else:
    ACTIVE_FX_SLAVE_PLATFORMS = {}
if 'limit_tb_platforms' in master_config:
    ACTIVE_THUNDERBIRD_PLATFORMS = dict(
        (p, None) for p in master_config['limit_tb_platforms'])
else:
    ACTIVE_THUNDERBIRD_PLATFORMS = dict(
        (k, None) for k in THUNDERBIRD_PLATFORMS.keys())
if 'limit_b2g_platforms' in master_config:
    ACTIVE_B2G_PLATFORMS = dict(
        (p, None) for p in master_config['limit_b2g_platforms'])
else:
    ACTIVE_B2G_PLATFORMS = dict((k, None) for k in B2G_PLATFORMS.keys())