diff options
Diffstat (limited to 'taskcluster/gecko_taskgraph/transforms/build_schedules.py')
-rw-r--r-- | taskcluster/gecko_taskgraph/transforms/build_schedules.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/taskcluster/gecko_taskgraph/transforms/build_schedules.py b/taskcluster/gecko_taskgraph/transforms/build_schedules.py new file mode 100644 index 0000000000..ed6262b8b2 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build_schedules.py @@ -0,0 +1,48 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.platforms import platform_family + +transforms = TransformSequence() + + +@transforms.add +def set_build_schedules_optimization(config, tasks): + """Set the `build` optimization based on the build platform.""" + for task in tasks: + # don't add an optimization if there's already one defined + if "when" in task or "optimization" in task: + yield task + continue + + schedules = [] + if config.kind == "build": + family = platform_family(task["attributes"]["build_platform"]) + schedules = [family] + + if "android" not in family: + # These are not GeckoView builds, so are associated with Firefox. + schedules.append("firefox") + + elif config.kind in ( + "build-components", + "build-samples-browser", + "test-components", + ): + # These are Android components builds and can only impact Fenix or Focus. + schedules = ["android", "fenix", "focus-android"] + + elif config.kind in ("build-apk", "build-bundle", "test-apk", "ui-test-apk"): + # These are APK builds for Fenix or Focus + schedules = ["android"] + + if "fenix" in task["name"]: + schedules.append("fenix") + elif "focus" in task["name"] or "klar" in task["name"]: + schedules.append("focus-android") + + task["optimization"] = {"build": schedules} + yield task |