summaryrefslogtreecommitdiffstats
path: root/taskcluster/gecko_taskgraph/transforms
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster/gecko_taskgraph/transforms')
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_attrs.py16
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_schedules.py48
-rw-r--r--taskcluster/gecko_taskgraph/transforms/condprof.py8
-rw-r--r--taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py6
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/__init__.py15
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/mach.py2
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/mozharness.py2
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_deps.py11
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_notifications.py3
-rw-r--r--taskcluster/gecko_taskgraph/transforms/signing.py26
-rw-r--r--taskcluster/gecko_taskgraph/transforms/task.py49
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/__init__.py14
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/chunk.py3
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/other.py81
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/raptor.py1
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/worker.py17
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test_apk.py33
-rw-r--r--taskcluster/gecko_taskgraph/transforms/update_verify_config.py2
18 files changed, 240 insertions, 97 deletions
diff --git a/taskcluster/gecko_taskgraph/transforms/build_attrs.py b/taskcluster/gecko_taskgraph/transforms/build_attrs.py
index 9cda71718a..fda9888fe1 100644
--- a/taskcluster/gecko_taskgraph/transforms/build_attrs.py
+++ b/taskcluster/gecko_taskgraph/transforms/build_attrs.py
@@ -4,8 +4,6 @@
from taskgraph.transforms.base import TransformSequence
-from gecko_taskgraph.util.platforms import platform_family
-
transforms = TransformSequence()
@@ -34,17 +32,3 @@ def set_build_attributes(config, jobs):
)
yield job
-
-
-@transforms.add
-def set_schedules_optimization(config, jobs):
- """Set the `skip-unless-affected` optimization based on the build platform."""
- for job in jobs:
- # don't add skip-unless-schedules if there's already a when defined
- if "when" in job:
- yield job
- continue
-
- build_platform = job["attributes"]["build_platform"]
- job.setdefault("optimization", {"build": [platform_family(build_platform)]})
- yield job
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
diff --git a/taskcluster/gecko_taskgraph/transforms/condprof.py b/taskcluster/gecko_taskgraph/transforms/condprof.py
index 516c1d8f20..f39a9b09ab 100644
--- a/taskcluster/gecko_taskgraph/transforms/condprof.py
+++ b/taskcluster/gecko_taskgraph/transforms/condprof.py
@@ -28,7 +28,7 @@ diff_description_schema = Schema(
Optional("run-on-projects"): task_description_schema["run-on-projects"],
Optional("scopes"): task_description_schema["scopes"],
Optional("treeherder"): task_description_schema["treeherder"],
- Optional("use-system-python"): bool,
+ Optional("use-python"): job_description_schema["use-python"],
Optional("worker"): job_description_schema["worker"],
Optional("worker-type"): task_description_schema["worker-type"],
}
@@ -84,8 +84,8 @@ def generate_scenarios(config, tasks):
"fetches": copy_task(task["fetches"]),
}
- use_system_python = task.get("use-system-python", None)
- if use_system_python is not None:
- taskdesc["use-system-python"] = use_system_python
+ use_taskcluster_python = task.get("use-python", "system")
+ if use_taskcluster_python != "system":
+ taskdesc["use-python"] = use_taskcluster_python
yield taskdesc
diff --git a/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py
index 2f0d8dd2aa..016d642b9b 100644
--- a/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py
+++ b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py
@@ -2,7 +2,7 @@
# 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/.
"""
-Transform the repackage signing task into an actual task description.
+Transform the geckodriver notarization task into an actual task description.
"""
from taskgraph.transforms.base import TransformSequence
@@ -14,7 +14,7 @@ from gecko_taskgraph.transforms.task import task_description_schema
from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
from gecko_taskgraph.util.scriptworker import add_scope_prefix
-repackage_signing_description_schema = Schema(
+geckodriver_notarization_description_schema = Schema(
{
Optional("label"): str,
Optional("treeherder"): task_description_schema["treeherder"],
@@ -38,7 +38,7 @@ def remove_name(config, jobs):
yield job
-transforms.add_validate(repackage_signing_description_schema)
+transforms.add_validate(geckodriver_notarization_description_schema)
@transforms.add
diff --git a/taskcluster/gecko_taskgraph/transforms/job/__init__.py b/taskcluster/gecko_taskgraph/transforms/job/__init__.py
index b87f7e0955..54cedf513a 100644
--- a/taskcluster/gecko_taskgraph/transforms/job/__init__.py
+++ b/taskcluster/gecko_taskgraph/transforms/job/__init__.py
@@ -14,11 +14,12 @@ import json
import logging
import mozpack.path as mozpath
+from packaging.version import Version
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.python_path import import_sibling_modules
from taskgraph.util.schema import Schema, validate_schema
from taskgraph.util.taskcluster import get_artifact_prefix
-from voluptuous import Any, Exclusive, Extra, Optional, Required
+from voluptuous import Any, Coerce, Exclusive, Extra, Optional, Required
from gecko_taskgraph.transforms.cached_tasks import order_tasks
from gecko_taskgraph.transforms.task import task_description_schema
@@ -62,7 +63,7 @@ job_description_schema = Schema(
"optimization"
],
Optional("use-sccache"): task_description_schema["use-sccache"],
- Optional("use-system-python"): bool,
+ Optional("use-python"): Any("system", "default", Coerce(Version)),
Optional("priority"): task_description_schema["priority"],
# The "when" section contains descriptions of the circumstances under which
# this task should be included in the task graph. This will be converted
@@ -245,9 +246,15 @@ def get_attribute(dict, key, attributes, attribute_name):
@transforms.add
def use_system_python(config, jobs):
for job in jobs:
- if job.pop("use-system-python", True):
+ taskcluster_python = job.pop("use-python", "system")
+ if taskcluster_python == "system":
yield job
else:
+ if taskcluster_python == "default":
+ python_version = "python" # the taskcluster default alias
+ else:
+ python_version = f"python-{taskcluster_python}"
+
fetches = job.setdefault("fetches", {})
toolchain = fetches.setdefault("toolchain", [])
if "win" in job["worker"]["os"]:
@@ -259,7 +266,7 @@ def use_system_python(config, jobs):
else:
raise ValueError("unexpected worker.os value {}".format(platform))
- toolchain.append("{}-python".format(platform))
+ toolchain.append(f"{platform}-{python_version}")
worker = job.setdefault("worker", {})
env = worker.setdefault("env", {})
diff --git a/taskcluster/gecko_taskgraph/transforms/job/mach.py b/taskcluster/gecko_taskgraph/transforms/job/mach.py
index 775213f8fe..5f830ec04b 100644
--- a/taskcluster/gecko_taskgraph/transforms/job/mach.py
+++ b/taskcluster/gecko_taskgraph/transforms/job/mach.py
@@ -50,7 +50,7 @@ def configure_mach(config, job, taskdesc):
if python:
del run["python-version"]
- if taskdesc.get("use-system-python"):
+ if taskdesc.get("use-python", "system") == "system":
if worker["os"] == "macosx" and python == 3:
python = "/usr/local/bin/python3"
diff --git a/taskcluster/gecko_taskgraph/transforms/job/mozharness.py b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py
index 4d7293ec51..ada5b85ea3 100644
--- a/taskcluster/gecko_taskgraph/transforms/job/mozharness.py
+++ b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py
@@ -289,7 +289,7 @@ def mozharness_on_generic_worker(config, job, taskdesc):
system_python_dir = ""
gecko_path = "$GECKO_PATH"
- if run.get("use-system-python", True):
+ if run.get("use-python", "system") == "system":
python_bindir = system_python_dir
else:
# $MOZ_PYTHON_HOME is going to be substituted in run-task, when we
diff --git a/taskcluster/gecko_taskgraph/transforms/release_deps.py b/taskcluster/gecko_taskgraph/transforms/release_deps.py
index e44af576eb..aab8a2f60a 100644
--- a/taskcluster/gecko_taskgraph/transforms/release_deps.py
+++ b/taskcluster/gecko_taskgraph/transforms/release_deps.py
@@ -44,6 +44,17 @@ def add_dependencies(config, jobs):
!= job["attributes"]["build_platform"]
):
continue
+
+ # TODO get rid of the release-type match
+ if product == "firefox-android":
+ # exclude beta tasks from release graph and vice versa
+ from android_taskgraph.release_type import does_task_match_release_type
+
+ if not does_task_match_release_type(
+ dep_task, config.params["release_type"]
+ ):
+ continue
+
# Add matching product tasks to deps
if (
dep_task.task.get("shipping-product") == product
diff --git a/taskcluster/gecko_taskgraph/transforms/release_notifications.py b/taskcluster/gecko_taskgraph/transforms/release_notifications.py
index 86109ec5ed..071e5de8a3 100644
--- a/taskcluster/gecko_taskgraph/transforms/release_notifications.py
+++ b/taskcluster/gecko_taskgraph/transforms/release_notifications.py
@@ -39,6 +39,9 @@ def add_notifications(config, jobs):
resolve_keyed_by(
notifications, "emails", label, project=config.params["project"]
)
+ resolve_keyed_by(
+ notifications, "message", label, project=config.params["project"]
+ )
emails = notifications["emails"]
format_kwargs = dict(
task=job,
diff --git a/taskcluster/gecko_taskgraph/transforms/signing.py b/taskcluster/gecko_taskgraph/transforms/signing.py
index e55ad47f42..1bf91effd1 100644
--- a/taskcluster/gecko_taskgraph/transforms/signing.py
+++ b/taskcluster/gecko_taskgraph/transforms/signing.py
@@ -12,10 +12,7 @@ from taskgraph.util.schema import Schema, taskref_or_string
from voluptuous import Optional, Required
from gecko_taskgraph.transforms.task import task_description_schema
-from gecko_taskgraph.util.attributes import (
- copy_attributes_from_dependent_job,
- release_level,
-)
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
from gecko_taskgraph.util.scriptworker import (
add_scope_prefix,
get_signing_cert_scope_per_platform,
@@ -77,30 +74,11 @@ transforms.add_validate(signing_description_schema)
@transforms.add
-def add_entitlements_link(config, jobs):
- for job in jobs:
- dep_job = get_primary_dependency(config, job)
- entitlements_path = evaluate_keyed_by(
- config.graph_config["mac-notarization"]["mac-entitlements"],
- "mac entitlements",
- {
- "platform": dep_job.attributes.get("build_platform"),
- "release-level": release_level(config.params["project"]),
- },
- )
- if entitlements_path:
- job["entitlements-url"] = config.params.file_url(
- entitlements_path,
- )
- yield job
-
-
-@transforms.add
def add_requirements_link(config, jobs):
for job in jobs:
dep_job = get_primary_dependency(config, job)
requirements_path = evaluate_keyed_by(
- config.graph_config["mac-notarization"]["mac-requirements"],
+ config.graph_config["mac-signing"]["mac-requirements"],
"mac requirements",
{
"platform": dep_job.attributes.get("build_platform"),
diff --git a/taskcluster/gecko_taskgraph/transforms/task.py b/taskcluster/gecko_taskgraph/transforms/task.py
index 3129742ea9..4bfe0e9f6d 100644
--- a/taskcluster/gecko_taskgraph/transforms/task.py
+++ b/taskcluster/gecko_taskgraph/transforms/task.py
@@ -1349,6 +1349,23 @@ def build_push_addons_payload(config, task, task_def):
],
},
Optional("merge-info"): object,
+ Optional("android-l10n-import-info"): {
+ Required("from-repo-url"): str,
+ Required("toml-info"): [
+ {
+ Required("toml-path"): str,
+ Required("dest-path"): str,
+ }
+ ],
+ },
+ Optional("android-l10n-sync-info"): {
+ Required("from-repo-url"): str,
+ Required("toml-info"): [
+ {
+ Required("toml-path"): str,
+ }
+ ],
+ },
},
)
def build_treescript_payload(config, task, task_def):
@@ -1412,6 +1429,38 @@ def build_treescript_payload(config, task, task_def):
task_def["payload"]["merge_info"] = merge_info
actions.append("merge_day")
+ if worker.get("android-l10n-import-info"):
+ android_l10n_import_info = {}
+ for k, v in worker["android-l10n-import-info"].items():
+ android_l10n_import_info[k.replace("-", "_")] = worker[
+ "android-l10n-import-info"
+ ][k]
+ android_l10n_import_info["toml_info"] = [
+ {
+ param_name.replace("-", "_"): param_value
+ for param_name, param_value in entry.items()
+ }
+ for entry in worker["android-l10n-import-info"]["toml-info"]
+ ]
+ task_def["payload"]["android_l10n_import_info"] = android_l10n_import_info
+ actions.append("android_l10n_import")
+
+ if worker.get("android-l10n-sync-info"):
+ android_l10n_sync_info = {}
+ for k, v in worker["android-l10n-sync-info"].items():
+ android_l10n_sync_info[k.replace("-", "_")] = worker[
+ "android-l10n-sync-info"
+ ][k]
+ android_l10n_sync_info["toml_info"] = [
+ {
+ param_name.replace("-", "_"): param_value
+ for param_name, param_value in entry.items()
+ }
+ for entry in worker["android-l10n-sync-info"]["toml-info"]
+ ]
+ task_def["payload"]["android_l10n_sync_info"] = android_l10n_sync_info
+ actions.append("android_l10n_sync")
+
if worker["push"]:
actions.append("push")
diff --git a/taskcluster/gecko_taskgraph/transforms/test/__init__.py b/taskcluster/gecko_taskgraph/transforms/test/__init__.py
index 92704bf18c..19ab8d289f 100644
--- a/taskcluster/gecko_taskgraph/transforms/test/__init__.py
+++ b/taskcluster/gecko_taskgraph/transforms/test/__init__.py
@@ -27,6 +27,7 @@ from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
from voluptuous import Any, Exclusive, Optional, Required
from gecko_taskgraph.optimize.schema import OptimizationSchema
+from gecko_taskgraph.transforms.job import job_description_schema
from gecko_taskgraph.transforms.test.other import get_mobile_project
from gecko_taskgraph.util.chunking import manifest_loaders
@@ -118,7 +119,9 @@ test_description_schema = Schema(
Required("run-without-variant"): optionally_keyed_by("test-platform", bool),
# The EC2 instance size to run these tests on.
Required("instance-size"): optionally_keyed_by(
- "test-platform", Any("default", "large", "xlarge")
+ "test-platform",
+ "variant",
+ Any("default", "large", "large-noscratch", "xlarge", "xlarge-noscratch"),
),
# type of virtualization or hardware required by test.
Required("virtualization"): optionally_keyed_by(
@@ -265,11 +268,14 @@ test_description_schema = Schema(
str,
None,
{Required("index"): str, Required("name"): str},
+ {Required("upstream-task"): str, Required("name"): str},
),
),
# A list of artifacts to install from 'fetch' tasks. Validation deferred
# to 'job' transforms.
Optional("fetches"): object,
+ # A list of extra dependencies
+ Optional("dependencies"): object,
# Raptor / browsertime specific keys, defer validation to 'raptor.py'
# transform.
Optional("raptor"): object,
@@ -279,6 +285,8 @@ test_description_schema = Schema(
Optional("subtest"): str,
# Define if a given task supports artifact builds or not, see bug 1695325.
Optional("supports-artifact-builds"): bool,
+ # Version of python used to run the task
+ Optional("use-python"): job_description_schema["use-python"],
}
)
@@ -346,6 +354,7 @@ def set_defaults(config, tasks):
task.setdefault("run-without-variant", True)
task.setdefault("variants", [])
task.setdefault("supports-artifact-builds", True)
+ task.setdefault("use-python", "system")
task["mozharness"].setdefault("extra-options", [])
task["mozharness"].setdefault("requires-signed-builds", False)
@@ -484,6 +493,9 @@ def make_job_description(config, tasks):
if task["mozharness"]["requires-signed-builds"] is True:
jobdesc["dependencies"]["build-signing"] = task["build-signing-label"]
+ if "dependencies" in task:
+ jobdesc["dependencies"].update(task["dependencies"])
+
if "expires-after" in task:
jobdesc["expires-after"] = task["expires-after"]
diff --git a/taskcluster/gecko_taskgraph/transforms/test/chunk.py b/taskcluster/gecko_taskgraph/transforms/test/chunk.py
index 7f832c57df..8219c41664 100644
--- a/taskcluster/gecko_taskgraph/transforms/test/chunk.py
+++ b/taskcluster/gecko_taskgraph/transforms/test/chunk.py
@@ -44,8 +44,7 @@ def set_test_verify_chunks(config, tasks):
task["chunks"] = perfile_number_of_chunks(
is_try(config.params),
env.get("MOZHARNESS_TEST_PATHS", ""),
- config.params.get("head_repository", ""),
- config.params.get("head_rev", ""),
+ frozenset(config.params["files_changed"]),
task["test-name"],
)
diff --git a/taskcluster/gecko_taskgraph/transforms/test/other.py b/taskcluster/gecko_taskgraph/transforms/test/other.py
index b8cb95cff7..5d54467001 100644
--- a/taskcluster/gecko_taskgraph/transforms/test/other.py
+++ b/taskcluster/gecko_taskgraph/transforms/test/other.py
@@ -2,6 +2,7 @@
# 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/.
+import copy
import hashlib
import json
import re
@@ -12,7 +13,11 @@ from taskgraph.transforms.base import TransformSequence
from taskgraph.util.attributes import keymatch
from taskgraph.util.keyed_by import evaluate_keyed_by
from taskgraph.util.schema import Schema, resolve_keyed_by
-from taskgraph.util.taskcluster import get_artifact_path, get_index_url
+from taskgraph.util.taskcluster import (
+ get_artifact_path,
+ get_artifact_url,
+ get_index_url,
+)
from voluptuous import Any, Optional, Required
from gecko_taskgraph.transforms.test.variant import TEST_VARIANTS
@@ -99,6 +104,25 @@ def setup_talos(config, tasks):
if config.params.get("project", None):
extra_options.append("--project=%s" % config.params["project"])
+ if "pdfpaint" in task["try-name"]:
+ max_chunks = 10
+ for chunk in range(1, max_chunks + 1):
+ new_task = copy.deepcopy(task)
+ new_task["mozharness"]["extra-options"].append(
+ f"--pdfPaintChunk={chunk}"
+ )
+ new_task["test-name"] = task["test-name"].replace(
+ "pdfpaint", f"pdfpaint-{chunk}"
+ )
+ new_task["try-name"] = task["try-name"].replace(
+ "pdfpaint", f"pdfpaint-{chunk}"
+ )
+ new_task["treeherder-symbol"] = task["treeherder-symbol"].replace(
+ "pdfpaint", f"pdfpaint-{chunk}"
+ )
+ yield new_task
+ continue
+
yield task
@@ -246,6 +270,7 @@ def handle_keyed_by(config, tasks):
"webrender-run-on-projects",
"mozharness.requires-signed-builds",
"build-signing-label",
+ "dependencies",
]
for task in tasks:
for field in fields:
@@ -292,10 +317,17 @@ def set_target(config, tasks):
target = "target.tar.bz2"
if isinstance(target, dict):
- # TODO Remove hardcoded mobile artifact prefix
- index_url = get_index_url(target["index"])
- installer_url = "{}/artifacts/public/{}".format(index_url, target["name"])
- task["mozharness"]["installer-url"] = installer_url
+ if "index" in target:
+ # TODO Remove hardcoded mobile artifact prefix
+ index_url = get_index_url(target["index"])
+ installer_url = "{}/artifacts/public/{}".format(
+ index_url, target["name"]
+ )
+ task["mozharness"]["installer-url"] = installer_url
+ else:
+ task["mozharness"]["installer-url"] = get_artifact_url(
+ f'<{target["upstream-task"]}>', target["name"]
+ )
else:
task["mozharness"]["build-artifact-name"] = get_artifact_path(task, target)
@@ -363,39 +395,39 @@ def setup_browsertime(config, tasks):
cd_fetches = {
"android.*": [
- "linux64-chromedriver-120",
- "linux64-chromedriver-121",
"linux64-chromedriver-122",
+ "linux64-chromedriver-123",
+ "linux64-chromedriver-124",
],
"linux.*": [
- "linux64-chromedriver-120",
- "linux64-chromedriver-121",
"linux64-chromedriver-122",
+ "linux64-chromedriver-123",
+ "linux64-chromedriver-124",
],
"macosx1015.*": [
- "mac64-chromedriver-120",
- "mac64-chromedriver-121",
"mac64-chromedriver-122",
+ "mac64-chromedriver-123",
+ "mac64-chromedriver-124",
],
"macosx1400.*": [
- "mac-arm-chromedriver-120",
- "mac-arm-chromedriver-121",
"mac-arm-chromedriver-122",
+ "mac-arm-chromedriver-123",
+ "mac-arm-chromedriver-124",
],
"windows.*aarch64.*": [
- "win32-chromedriver-120",
"win32-chromedriver-121",
"win32-chromedriver-122",
+ "win32-chromedriver-123",
],
"windows.*-32.*": [
- "win32-chromedriver-120",
- "win32-chromedriver-121",
"win32-chromedriver-122",
+ "win32-chromedriver-123",
+ "win32-chromedriver-124",
],
"windows.*-64.*": [
- "win32-chromedriver-120",
- "win32-chromedriver-121",
"win32-chromedriver-122",
+ "win32-chromedriver-123",
+ "win64-chromedriver-124",
],
}
@@ -419,11 +451,7 @@ def setup_browsertime(config, tasks):
# Only add the chromedriver fetches when chrome is running
for platform in cd_fetches:
fs["by-test-platform"][platform].extend(cd_fetches[platform])
- if (
- "--app=chromium" in extra_options
- or "--app=custom-car" in extra_options
- or "--app=cstm-car-m" in extra_options
- ):
+ if "--app=custom-car" in extra_options or "--app=cstm-car-m" in extra_options:
for platform in chromium_fetches:
fs["by-test-platform"][platform].extend(chromium_fetches[platform])
@@ -791,7 +819,7 @@ test_setting_description_schema = Schema(
},
Optional("device"): str,
Optional("display"): "wayland",
- Optional("machine"): Any("ref-hw-2017", "hw-ref"),
+ Optional("machine"): "hw-ref",
},
"build": {
Required("type"): Any("opt", "debug", "debug-isolated-process"),
@@ -852,7 +880,6 @@ def set_test_setting(config, tasks):
# TODO Rename these so they don't have a dash.
dash_attrs = [
"clang-trunk",
- "ref-hw-2017",
"hw-ref",
]
dash_token = "%D%"
@@ -908,9 +935,6 @@ def set_test_setting(config, tasks):
if parts[0].isdigit():
os_build = parts.pop(0)
- if parts and parts[0] == "ref-hw-2017":
- machine = parts.pop(0)
-
if parts and parts[0] == "hw-ref":
machine = parts.pop(0)
@@ -1102,6 +1126,7 @@ def set_schedules_components(config, tasks):
schedules.add(category)
schedules.add(platform_family(task["build-platform"]))
+ schedules.add("firefox")
task["schedules-component"] = sorted(schedules)
yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/test/raptor.py b/taskcluster/gecko_taskgraph/transforms/test/raptor.py
index 18e21e6a1e..ca35749037 100644
--- a/taskcluster/gecko_taskgraph/transforms/test/raptor.py
+++ b/taskcluster/gecko_taskgraph/transforms/test/raptor.py
@@ -76,7 +76,6 @@ def split_apps(config, tests):
app_symbols = {
"chrome": "ChR",
"chrome-m": "ChR",
- "chromium": "Cr",
"fenix": "fenix",
"refbrow": "refbrow",
"safari": "Saf",
diff --git a/taskcluster/gecko_taskgraph/transforms/test/worker.py b/taskcluster/gecko_taskgraph/transforms/test/worker.py
index 873347459c..51b12de51d 100644
--- a/taskcluster/gecko_taskgraph/transforms/test/worker.py
+++ b/taskcluster/gecko_taskgraph/transforms/test/worker.py
@@ -7,8 +7,10 @@ from taskgraph.transforms.base import TransformSequence
# default worker types keyed by instance-size
LINUX_WORKER_TYPES = {
"large": "t-linux-large",
+ "large-noscratch": "t-linux-large-noscratch",
"xlarge": "t-linux-xlarge",
- "default": "t-linux-large",
+ "xlarge-noscratch": "t-linux-xlarge-noscratch",
+ "default": "t-linux-large-noscratch",
}
# windows worker types keyed by test-platform and virtualization
@@ -23,11 +25,6 @@ WINDOWS_WORKER_TYPES = {
"virtual-with-gpu": "t-win10-64-gpu-s",
"hardware": "t-win10-64-1803-hw",
},
- "windows10-64-ref-hw-2017": {
- "virtual": "t-win10-64",
- "virtual-with-gpu": "t-win10-64-gpu-s",
- "hardware": "t-win10-64-ref-hw",
- },
"windows11-64-2009-hw-ref-shippable": {
"virtual": "win11-64-2009-hw-ref",
"virtual-with-gpu": "win11-64-2009-hw-ref",
@@ -130,12 +127,8 @@ def set_worker_type(config, tasks):
elif test_platform.startswith("win"):
# figure out what platform the job needs to run on
if task["virtualization"] == "hardware":
- # some jobs like talos and reftest run on real h/w - those are all win10
- if test_platform.startswith("windows10-64-ref-hw-2017"):
- win_worker_type_platform = WINDOWS_WORKER_TYPES[
- "windows10-64-ref-hw-2017"
- ]
- elif test_platform.startswith("windows11-64-2009-hw-ref"):
+ # some jobs like talos and reftest run on real h/w
+ if test_platform.startswith("windows11-64-2009-hw-ref"):
win_worker_type_platform = WINDOWS_WORKER_TYPES[
"windows11-64-2009-hw-ref"
]
diff --git a/taskcluster/gecko_taskgraph/transforms/test_apk.py b/taskcluster/gecko_taskgraph/transforms/test_apk.py
new file mode 100644
index 0000000000..b00657b91e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test_apk.py
@@ -0,0 +1,33 @@
+# 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/.
+"""
+Apply some defaults and minor modifications to the jobs defined in the test
+kinds.
+"""
+
+from __future__ import absolute_import, print_function, unicode_literals
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def resolve_keys(config, tasks):
+ for task in tasks:
+ for key in (
+ "routes",
+ "scopes",
+ "extra.notify",
+ ):
+ resolve_keyed_by(
+ task,
+ key,
+ item_name=task["name"],
+ **{
+ "level": config.params["level"],
+ }
+ )
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/update_verify_config.py b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py
index 2d1cd40877..4e516f173c 100644
--- a/taskcluster/gecko_taskgraph/transforms/update_verify_config.py
+++ b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py
@@ -101,6 +101,8 @@ def add_command(config, tasks):
get_branch_rev(config),
"--output-file",
"update-verify.cfg",
+ "--local-repo",
+ ".",
]
repo_path = urlsplit(get_branch_repo(config)).path.lstrip("/")