summaryrefslogtreecommitdiffstats
path: root/taskcluster/gecko_taskgraph/transforms/build_schedules.py
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster/gecko_taskgraph/transforms/build_schedules.py')
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_schedules.py48
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