16d528ed9Sopenharmony_ci#!/usr/bin/env lucicfg
26d528ed9Sopenharmony_ci
36d528ed9Sopenharmony_cilucicfg.check_version("1.30.9", "Please update depot_tools")
46d528ed9Sopenharmony_ci
56d528ed9Sopenharmony_ci# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
66d528ed9Sopenharmony_cilucicfg.enable_experiment("crbug.com/1182002")
76d528ed9Sopenharmony_ci
86d528ed9Sopenharmony_cilucicfg.config(
96d528ed9Sopenharmony_ci    config_dir = "generated",
106d528ed9Sopenharmony_ci    tracked_files = [
116d528ed9Sopenharmony_ci        "commit-queue.cfg",
126d528ed9Sopenharmony_ci        "cr-buildbucket.cfg",
136d528ed9Sopenharmony_ci        "project.cfg",
146d528ed9Sopenharmony_ci        "luci-logdog.cfg",
156d528ed9Sopenharmony_ci        "luci-milo.cfg",
166d528ed9Sopenharmony_ci        "luci-scheduler.cfg",
176d528ed9Sopenharmony_ci        "realms.cfg",
186d528ed9Sopenharmony_ci    ],
196d528ed9Sopenharmony_ci    fail_on_warnings = True,
206d528ed9Sopenharmony_ci)
216d528ed9Sopenharmony_ci
226d528ed9Sopenharmony_ciluci.project(
236d528ed9Sopenharmony_ci    name = "gn",
246d528ed9Sopenharmony_ci    buildbucket = "cr-buildbucket.appspot.com",
256d528ed9Sopenharmony_ci    logdog = "luci-logdog",
266d528ed9Sopenharmony_ci    milo = "luci-milo",
276d528ed9Sopenharmony_ci    scheduler = "luci-scheduler",
286d528ed9Sopenharmony_ci    swarming = "chromium-swarm.appspot.com",
296d528ed9Sopenharmony_ci    acls = [
306d528ed9Sopenharmony_ci        acl.entry(
316d528ed9Sopenharmony_ci            [
326d528ed9Sopenharmony_ci                acl.BUILDBUCKET_READER,
336d528ed9Sopenharmony_ci                acl.LOGDOG_READER,
346d528ed9Sopenharmony_ci                acl.PROJECT_CONFIGS_READER,
356d528ed9Sopenharmony_ci                acl.SCHEDULER_READER,
366d528ed9Sopenharmony_ci            ],
376d528ed9Sopenharmony_ci            groups = ["all"],
386d528ed9Sopenharmony_ci        ),
396d528ed9Sopenharmony_ci        acl.entry([acl.SCHEDULER_OWNER], groups = ["project-gn-committers"]),
406d528ed9Sopenharmony_ci        acl.entry([acl.LOGDOG_WRITER], groups = ["luci-logdog-chromium-writers"]),
416d528ed9Sopenharmony_ci    ],
426d528ed9Sopenharmony_ci)
436d528ed9Sopenharmony_ci
446d528ed9Sopenharmony_cidef builder(name, bucket, os, caches = None, triggered_by = None):
456d528ed9Sopenharmony_ci    luci.builder(
466d528ed9Sopenharmony_ci        name = name,
476d528ed9Sopenharmony_ci        bucket = bucket,
486d528ed9Sopenharmony_ci        executable = luci.recipe(
496d528ed9Sopenharmony_ci            name = "gn",
506d528ed9Sopenharmony_ci            cipd_package = "infra/recipe_bundles/gn.googlesource.com/gn",
516d528ed9Sopenharmony_ci            cipd_version = "refs/heads/main",
526d528ed9Sopenharmony_ci        ),
536d528ed9Sopenharmony_ci        caches = caches,
546d528ed9Sopenharmony_ci        service_account = "gn-%s-builder@chops-service-accounts.iam.gserviceaccount.com" % bucket,
556d528ed9Sopenharmony_ci        execution_timeout = 1 * time.hour,
566d528ed9Sopenharmony_ci        dimensions = {"cpu": "x86-64", "os": os, "pool": "luci.flex.%s" % bucket},
576d528ed9Sopenharmony_ci        triggered_by = triggered_by,
586d528ed9Sopenharmony_ci        experiments = {
596d528ed9Sopenharmony_ci            "luci.recipes.use_python3": 100,
606d528ed9Sopenharmony_ci        },
616d528ed9Sopenharmony_ci    )
626d528ed9Sopenharmony_ci
636d528ed9Sopenharmony_ciluci.logdog(
646d528ed9Sopenharmony_ci    gs_bucket = "chromium-luci-logdog",
656d528ed9Sopenharmony_ci)
666d528ed9Sopenharmony_ci
676d528ed9Sopenharmony_ciluci.milo(
686d528ed9Sopenharmony_ci    logo = "https://storage.googleapis.com/chrome-infra-public/logo/gn-logo.png",
696d528ed9Sopenharmony_ci)
706d528ed9Sopenharmony_ci
716d528ed9Sopenharmony_ciluci.console_view(
726d528ed9Sopenharmony_ci    name = "gn",
736d528ed9Sopenharmony_ci    title = "gn",
746d528ed9Sopenharmony_ci    repo = "https://gn.googlesource.com/gn",
756d528ed9Sopenharmony_ci    refs = ["refs/heads/main"],
766d528ed9Sopenharmony_ci    favicon = "https://storage.googleapis.com/chrome-infra-public/logo/favicon.ico",
776d528ed9Sopenharmony_ci)
786d528ed9Sopenharmony_ci
796d528ed9Sopenharmony_ciluci.gitiles_poller(
806d528ed9Sopenharmony_ci    name = "gn-trigger",
816d528ed9Sopenharmony_ci    bucket = "ci",
826d528ed9Sopenharmony_ci    repo = "https://gn.googlesource.com/gn",
836d528ed9Sopenharmony_ci    refs = ["refs/heads/main"],
846d528ed9Sopenharmony_ci)
856d528ed9Sopenharmony_ci
866d528ed9Sopenharmony_ciluci.bucket(name = "ci", acls = [
876d528ed9Sopenharmony_ci    acl.entry(
886d528ed9Sopenharmony_ci        [acl.BUILDBUCKET_TRIGGERER],
896d528ed9Sopenharmony_ci    ),
906d528ed9Sopenharmony_ci])
916d528ed9Sopenharmony_ci
926d528ed9Sopenharmony_cidef ci_builder(name, os, caches = None):
936d528ed9Sopenharmony_ci    builder(name, "ci", os, caches, triggered_by = ["gn-trigger"])
946d528ed9Sopenharmony_ci    luci.console_view_entry(
956d528ed9Sopenharmony_ci        console_view = "gn",
966d528ed9Sopenharmony_ci        builder = "ci/" + name,
976d528ed9Sopenharmony_ci        short_name = name,
986d528ed9Sopenharmony_ci    )
996d528ed9Sopenharmony_ci
1006d528ed9Sopenharmony_cici_builder("linux", "Ubuntu-18.04")
1016d528ed9Sopenharmony_cici_builder("mac", "Mac-10.15", caches = [swarming.cache("macos_sdk")])
1026d528ed9Sopenharmony_cici_builder("win", "Windows-10", caches = [swarming.cache("windows_sdk")])
1036d528ed9Sopenharmony_ci
1046d528ed9Sopenharmony_ciluci.cq(
1056d528ed9Sopenharmony_ci    submit_max_burst = 4,
1066d528ed9Sopenharmony_ci    submit_burst_delay = 8 * time.minute,
1076d528ed9Sopenharmony_ci)
1086d528ed9Sopenharmony_ci
1096d528ed9Sopenharmony_ciluci.cq_group(
1106d528ed9Sopenharmony_ci    name = "gn",
1116d528ed9Sopenharmony_ci    watch = cq.refset(
1126d528ed9Sopenharmony_ci        repo = "https://gn.googlesource.com/gn",
1136d528ed9Sopenharmony_ci        refs = ["refs/heads/main"],
1146d528ed9Sopenharmony_ci    ),
1156d528ed9Sopenharmony_ci    acls = [
1166d528ed9Sopenharmony_ci        acl.entry(
1176d528ed9Sopenharmony_ci            [acl.CQ_COMMITTER],
1186d528ed9Sopenharmony_ci            groups = ["project-gn-committers"],
1196d528ed9Sopenharmony_ci        ),
1206d528ed9Sopenharmony_ci        acl.entry(
1216d528ed9Sopenharmony_ci            [acl.CQ_DRY_RUNNER],
1226d528ed9Sopenharmony_ci            groups = ["project-gn-tryjob-access"],
1236d528ed9Sopenharmony_ci        ),
1246d528ed9Sopenharmony_ci    ],
1256d528ed9Sopenharmony_ci    retry_config = cq.retry_config(
1266d528ed9Sopenharmony_ci        single_quota = 1,
1276d528ed9Sopenharmony_ci        global_quota = 2,
1286d528ed9Sopenharmony_ci        failure_weight = 1,
1296d528ed9Sopenharmony_ci        transient_failure_weight = 1,
1306d528ed9Sopenharmony_ci        timeout_weight = 2,
1316d528ed9Sopenharmony_ci    ),
1326d528ed9Sopenharmony_ci)
1336d528ed9Sopenharmony_ci
1346d528ed9Sopenharmony_ciluci.bucket(name = "try", acls = [
1356d528ed9Sopenharmony_ci    acl.entry(
1366d528ed9Sopenharmony_ci        [acl.BUILDBUCKET_TRIGGERER],
1376d528ed9Sopenharmony_ci        groups = ["project-gn-tryjob-access", "service-account-cq"],
1386d528ed9Sopenharmony_ci    ),
1396d528ed9Sopenharmony_ci])
1406d528ed9Sopenharmony_ci
1416d528ed9Sopenharmony_ciluci.binding(
1426d528ed9Sopenharmony_ci    realm = "try",
1436d528ed9Sopenharmony_ci    roles = "role/swarming.taskTriggerer",
1446d528ed9Sopenharmony_ci    groups = "flex-try-led-users",
1456d528ed9Sopenharmony_ci)
1466d528ed9Sopenharmony_ci
1476d528ed9Sopenharmony_cidef try_builder(name, os, caches = None):
1486d528ed9Sopenharmony_ci    builder(name, "try", os, caches)
1496d528ed9Sopenharmony_ci    luci.cq_tryjob_verifier(
1506d528ed9Sopenharmony_ci        builder = "try/" + name,
1516d528ed9Sopenharmony_ci        cq_group = "gn",
1526d528ed9Sopenharmony_ci    )
1536d528ed9Sopenharmony_ci
1546d528ed9Sopenharmony_citry_builder("linux", "Ubuntu-18.04")
1556d528ed9Sopenharmony_citry_builder("mac", "Mac-10.15", caches = [swarming.cache("macos_sdk")])
1566d528ed9Sopenharmony_citry_builder("win", "Windows-10", caches = [swarming.cache("windows_sdk")])
157