blob: 7ae19512ef9ec69cf7dbb647f1d9a9c54ae18357 [file] [log] [blame]
#!/usr/bin/env lucicfg
# Copyright (c) 2019 The Dart project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Use ./main.star to regenerate the Luci configuration based on this file.
#
# Documentation for lucicfg is here:
# https://chromium.googlesource.com/infra/luci/luci-go/+/main/lucicfg/doc/
"""
Generates the Luci configuration for the Dart project.
"""
load("//lib/cron.star", "cron")
load("//lib/dart.star", "dart")
load(
"//lib/defaults.star",
"experimental",
"focal",
"js_engines",
"no_caches",
)
lucicfg.check_version("1.33.7")
# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
lucicfg.enable_experiment("crbug.com/1182002")
# Global builder defaults
# These need to be set at the top level to affect all uses of luci.builder.
luci.builder.defaults.experiments.set({
"luci.recipes.use_python3": 100,
})
luci.builder.defaults.properties.set({
"$recipe_engine/isolated": {
"server": "https://isolateserver.appspot.com",
},
"$recipe_engine/swarming": {
"server": "https://chromium-swarm.appspot.com",
},
})
exec("//project.star")
exec("//cq.star")
luci.console_view(
name = "be",
repo = "https://dart.googlesource.com/sdk",
title = "Main Console",
refs = ["refs/heads/main"],
header = "console-header.textpb",
)
luci.console_view(
name = "alt",
repo = "https://dart.googlesource.com/sdk",
title = "Main Console (VM last)",
refs = ["refs/heads/main"],
header = "console-header.textpb",
)
luci.console_view(
name = "dev",
repo = "https://dart.googlesource.com/sdk",
title = "SDK Dev Console",
refs = ["refs/heads/dev"],
header = "console-header.textpb",
)
luci.console_view(
name = "beta",
repo = "https://dart.googlesource.com/sdk",
title = "SDK Beta Console",
refs = ["refs/heads/beta"],
header = "console-header.textpb",
)
luci.console_view(
name = "stable",
repo = "https://dart.googlesource.com/sdk",
title = "SDK Stable Console",
refs = ["refs/heads/stable"],
header = "console-header.textpb",
)
luci.list_view(
name = "dart-fuzz",
title = "Dart Fuzzer Console",
)
luci.list_view(
name = "iso-stress",
title = "VM Isolate Stress Test Console",
)
luci.gitiles_poller(
name = "dart-ci-test-data-trigger",
bucket = "ci",
path_regexps = ["tools/bots/ci_test_data_trigger"],
repo = dart.git,
refs = ["refs/heads/ci-test-data"],
)
dart.poller("dart-gitiles-trigger", branches = dart.branches)
luci.notifier(
name = "dart",
on_new_failure = True,
notify_blamelist = True,
)
luci.notifier(
name = "infra",
on_new_failure = True,
notify_emails = [
"athom@google.com",
"sortie@google.com",
"whesse@google.com",
],
)
luci.notifier(
name = "dart-fuzz-testing",
on_success = False,
on_failure = True,
notify_emails = ["bkonyi@google.com"],
)
luci.notifier(
name = "ci-test-data",
on_success = True,
on_failure = True,
)
exec("//sdk.star")
exec("//cfe.star")
exec("//dart2wasm.star")
vm = exec("//vm.star")
exec("//pkg.star")
exec("//dart2js.star")
exec("//ddc.star")
exec("//analyzer.star")
# misc
dart.ci_sandbox_builder("gclient", recipe = "dart/gclient", category = "misc|g")
# Builders that test the dev Linux images. When the image autoroller detects
# successful builds of these builders with a dev images, that dev image becomes
# the new prod image. Newly created bots will than use the updated image.
cron.image_builder(
"vm-ffi-qemu-linux-release-arm-experimental",
channels = [],
dimensions = [experimental, focal],
notifies = "infra",
)
dart.ci_sandbox_builder(
"ci-test-data",
channels = [],
properties = {"bisection_enabled": True},
notifies = "ci-test-data",
triggered_by = ["dart-ci-test-data-trigger"],
)
# Fuzz testing builders
dart.ci_sandbox_builder(
"fuzz-linux",
channels = [],
notifies = "dart-fuzz-testing",
schedule = "0 3,4 * * *",
triggered_by = None,
)
# Try only builders
dart.try_builder(
"benchmark-linux",
cq_branches = ["main"],
on_cq = True,
properties = js_engines,
)
dart.try_builder(
"presubmit",
bucket = "try.shared",
caches = no_caches,
execution_timeout = 10 * time.minute,
on_cq = True,
properties = {
"$depot_tools/presubmit": {
"runhooks": True,
},
},
recipe = "presubmit/presubmit",
)
vm.add_postponed_alt_console_entries()
# Dart Fuzz console
luci.list_view_entry(
builder = "fuzz-linux",
list_view = "dart-fuzz",
)
# VM isolate stress test console
luci.list_view_entry(
builder = "iso-stress-linux",
list_view = "iso-stress",
)
dart.try_builder(
"dev",
recipe = "release/merge",
execution_timeout = 15 * time.minute,
properties = {"from_ref": "refs/heads/lkgr", "to_ref": "refs/heads/dev"},
)
dart.try_builder(
"beta",
recipe = "release/merge",
execution_timeout = 15 * time.minute,
properties = {"from_ref": "refs/heads/dev", "to_ref": "refs/heads/beta"},
)
dart.try_builder(
"stable",
recipe = "release/merge",
execution_timeout = 15 * time.minute,
properties = {"from_ref": "refs/heads/beta", "to_ref": "refs/heads/stable"},
)
dart.try_builder(
"docker",
recipe = "release/docker",
# Use a fake stable version since it's only used to detect the channel.
properties = {"version": "1.2.3"},
cq_branches = [],
)
dart.try_builder(
"homebrew",
recipe = "release/homebrew",
cq_branches = [],
)
exec("//monorepo.star")