diff options
Diffstat (limited to 'taskcluster/gecko_taskgraph/transforms')
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("/") |