From f2dfbdb4f723f5e9bcd4dc15f345af7643e83de6 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 26 Feb 2026 09:14:17 +0100 Subject: [PATCH 1/5] ci: use matrix transforms --- taskcluster/kinds/tox/kind.yml | 36 ++++++------------- .../{python_version.py => replace_name.py} | 24 ++++--------- 2 files changed, 17 insertions(+), 43 deletions(-) rename taskcluster/scriptworker_taskgraph/transforms/{python_version.py => replace_name.py} (67%) diff --git a/taskcluster/kinds/tox/kind.yml b/taskcluster/kinds/tox/kind.yml index 31f495ac7..b560dcd34 100644 --- a/taskcluster/kinds/tox/kind.yml +++ b/taskcluster/kinds/tox/kind.yml @@ -8,14 +8,15 @@ kind-dependencies: - docker-image transforms: - - scriptworker_taskgraph.transforms.python_version:transforms + - scriptworker_taskgraph.transforms.replace_name:transforms + - taskgraph.transforms.matrix - scriptworker_taskgraph.transforms.cached:transforms - taskgraph.transforms.cached_tasks:transforms - taskgraph.transforms.run:transforms - taskgraph.transforms.task:transforms task-defaults: - description: "{name} tox-py{python_version}" + description: "{name} tox-py{{matrix[python]}}" run-on-tasks-for: - "github-pull-request" - "github-push" @@ -23,7 +24,7 @@ task-defaults: code-review: true worker-type: b-linux worker: - docker-image: {in-tree: 'python{python_version}'} + docker-image: {in-tree: 'python{matrix[python]}'} max-run-time: 1800 run: using: run-task @@ -31,50 +32,44 @@ task-defaults: scriptworker: {} # sparse-profile: str/none # workdir: - cwd: '{checkout}' + cwd: '{{checkout}}' command: - sh - -lxce - >- - uv run tox -e {name}-py{python_version} + uv run tox -e {name}-py{{matrix[python]}} resources: - pyproject.toml - tox.ini - uv.lock + matrix: + python: ["311"] tasks: addonscript: - python-versions: [311] resources: - addonscript balrogscript: - python-versions: [311] resources: - balrogscript - scriptworker_client beetmoverscript: - python-versions: [311] resources: - beetmoverscript bitrisescript: - python-versions: [311] resources: - bitrisescript bouncerscript: - python-versions: [311] resources: - bouncerscript configloader: - python-versions: [311] resources: - configloader githubscript: - python-versions: [311] resources: - githubscript - scriptworker_client init: - python-versions: [311] resources: - docker.d - addonscript/docker.d @@ -91,49 +86,40 @@ tasks: - signingscript/docker.d - treescript/docker.d iscript: - python-versions: [311] resources: - iscript - scriptworker_client - vendored/mozbuild landoscript: - python-versions: [311] resources: - landoscript - scriptworker_client pushapkscript: - python-versions: [311] worker: - docker-image: {in-tree: 'pushapkscript-test-py{python_version}'} + docker-image: {in-tree: 'pushapkscript-test-py{matrix[python]}'} resources: - pushapkscript pushflatpakscript: - python-versions: [311] worker: - docker-image: {in-tree: 'pushflatpakscript-test-py{python_version}'} + docker-image: {in-tree: 'pushflatpakscript-test-py{matrix[python]}'} resources: - pushflatpakscript pushmsixscript: - python-versions: [311] resources: - pushmsixscript scriptworker_client: - python-versions: [311] resources: - scriptworker_client shipitscript: - python-versions: [311] resources: - shipitscript signingscript: - python-versions: [311] worker: - docker-image: {in-tree: 'signingscript-test-py{python_version}'} + docker-image: {in-tree: 'signingscript-test-py{matrix[python]}'} resources: - signingscript - vendored/mozbuild treescript: - python-versions: [311] resources: - treescript - scriptworker_client diff --git a/taskcluster/scriptworker_taskgraph/transforms/python_version.py b/taskcluster/scriptworker_taskgraph/transforms/replace_name.py similarity index 67% rename from taskcluster/scriptworker_taskgraph/transforms/python_version.py rename to taskcluster/scriptworker_taskgraph/transforms/replace_name.py index 9abfceaaf..c8f4efb8d 100644 --- a/taskcluster/scriptworker_taskgraph/transforms/python_version.py +++ b/taskcluster/scriptworker_taskgraph/transforms/replace_name.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/. """ -Create a task per python-version +Substitute task name in other fields """ from copy import deepcopy @@ -53,26 +53,14 @@ def set_script_name(config, tasks): @transforms.add -def tasks_per_python_version(config, tasks): +def replace_name(config, tasks): fields = [ "description", - "docker-repo", "run.command", - "worker.command", - "worker.docker-image", ] for task_raw in tasks: - for python_version in task_raw.pop("python-versions"): - task = deepcopy(task_raw) - subs = {"name": task["name"], "python_version": python_version} - for field in fields: - _resolve_replace_string(task, field, subs) - task["attributes"]["python-version"] = python_version - yield task - - -@transforms.add -def update_name_with_python_version(config, tasks): - for task in tasks: - task["name"] = "{}-python{}".format(task["name"], task["attributes"]["python-version"]) + task = deepcopy(task_raw) + subs = {"name": task["name"]} + for field in fields: + _resolve_replace_string(task, field, subs) yield task From 6ebf99dcb6e0c8b1234494f7334a20e338e548e4 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 26 Feb 2026 10:35:28 +0100 Subject: [PATCH 2/5] ci: test with python 3.14 --- taskcluster/kinds/tox/kind.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taskcluster/kinds/tox/kind.yml b/taskcluster/kinds/tox/kind.yml index b560dcd34..72e2f15e7 100644 --- a/taskcluster/kinds/tox/kind.yml +++ b/taskcluster/kinds/tox/kind.yml @@ -43,7 +43,7 @@ task-defaults: - tox.ini - uv.lock matrix: - python: ["311"] + python: ["311", "314"] tasks: addonscript: From 7bafa9000eeafebc62f6665ee80416d11e104f47 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 26 Feb 2026 11:22:17 +0100 Subject: [PATCH 3/5] add docker images --- taskcluster/kinds/docker-image/kind.yml | 43 +++++++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/taskcluster/kinds/docker-image/kind.yml b/taskcluster/kinds/docker-image/kind.yml index 8dc989fb5..e9bd2aec7 100644 --- a/taskcluster/kinds/docker-image/kind.yml +++ b/taskcluster/kinds/docker-image/kind.yml @@ -10,20 +10,30 @@ transforms: - taskgraph.transforms.cached_tasks:transforms - taskgraph.transforms.task:transforms +meta: + - &py311 "3.11.9" + - &py314 "3.14.3" + - &uv_version "0.7.15" + tasks: python311: definition: base-test args: - PYTHON_VERSION: "3.11.9" - UV_VERSION: "0.7.15" + PYTHON_VERSION: *py311 + UV_VERSION: *uv_version + python314: + definition: base-test + args: + PYTHON_VERSION: *py314 + UV_VERSION: *uv_version # Used by push-image kind skopeo: {} base: args: - PYTHON_VERSION: "3.11.9" - UV_VERSION: "0.7.15" + PYTHON_VERSION: *py311 + UV_VERSION: *uv_version addonscript: definition: script parent: base @@ -84,18 +94,37 @@ tasks: pushapkscript-test-py311: definition: base-test args: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: *py311 APT_PACKAGES: default-jdk pushflatpakscript-test-py311: definition: base-test args: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: *py311 # Copied from pushflatpakscript/docker.d/image_setup.sh APT_PACKAGES: gir1.2-ostree-1.0 libgirepository1.0-dev ostree signingscript-test-py311: definition: base-test args: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: *py311 + APT_PACKAGES: osslsigncode cmake clang + + pushapkscript-test-py314: + definition: base-test + args: + PYTHON_VERSION: *py314 + APT_PACKAGES: default-jdk + + pushflatpakscript-test-py314: + definition: base-test + args: + PYTHON_VERSION: *py314 + # Copied from pushflatpakscript/docker.d/image_setup.sh + APT_PACKAGES: gir1.2-ostree-1.0 libgirepository1.0-dev ostree + + signingscript-test-py314: + definition: base-test + args: + PYTHON_VERSION: *py314 APT_PACKAGES: osslsigncode cmake clang From e3d7b865c264a2e56f456b16d110802ce7e7e16a Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 26 Feb 2026 11:31:20 +0100 Subject: [PATCH 4/5] yamllint --- taskcluster/kinds/docker-image/kind.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/taskcluster/kinds/docker-image/kind.yml b/taskcluster/kinds/docker-image/kind.yml index e9bd2aec7..dd2556ca6 100644 --- a/taskcluster/kinds/docker-image/kind.yml +++ b/taskcluster/kinds/docker-image/kind.yml @@ -11,9 +11,9 @@ transforms: - taskgraph.transforms.task:transforms meta: - - &py311 "3.11.9" - - &py314 "3.14.3" - - &uv_version "0.7.15" + - &py311 "3.11.9" + - &py314 "3.14.3" + - &uv_version "0.7.15" tasks: python311: From 7d336756ee0eb1d725991220fbc3589a8f18230f Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 26 Feb 2026 11:33:03 +0100 Subject: [PATCH 5/5] add tox config --- tox.ini | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/tox.ini b/tox.ini index 3e242ad95..ff52c95f8 100644 --- a/tox.ini +++ b/tox.ini @@ -108,6 +108,90 @@ changedir = {toxinidir}/treescript commands = tox -e py311 +[testenv:addonscript-py314] +changedir = {toxinidir}/addonscript +commands = + tox -e py314 + +[testenv:balrogscript-py314] +changedir = {toxinidir}/balrogscript +commands = + tox -e py314 + +[testenv:beetmoverscript-py314] +changedir = {toxinidir}/beetmoverscript +commands = + tox -e py314 + +[testenv:bitrisescript-py314] +changedir = {toxinidir}/bitrisescript +commands = + tox -e py314 + +[testenv:bouncerscript-py314] +changedir = {toxinidir}/bouncerscript +commands = + tox -e py314 + +[testenv:configloader-py314] +changedir = {toxinidir}/configloader +commands = + tox -e py314 + +[testenv:init-py314] +commands = + pytest -n auto tests + +[testenv:iscript-py314] +changedir = {toxinidir}/iscript +commands = + tox -e py314 + +[testenv:githubscript-py314] +changedir = {toxinidir}/githubscript +commands = + tox -e py314 + +[testenv:landoscript-py314] +changedir = {toxinidir}/landoscript +commands = + tox -e py314 + +[testenv:pushapkscript-py314] +changedir = {toxinidir}/pushapkscript +commands = + tox -e py314 + +[testenv:pushflatpakscript-py314] +changedir = {toxinidir}/pushflatpakscript +commands = + tox -e py314 + +[testenv:pushmsixscript-py314] +changedir = {toxinidir}/pushmsixscript +commands = + tox -e py314 + +[testenv:scriptworker_client-py314] +changedir = {toxinidir}/scriptworker_client +commands = + tox -e py314,mypy + +[testenv:shipitscript-py314] +changedir = {toxinidir}/shipitscript +commands = + tox -e py314 + +[testenv:signingscript-py314] +changedir = {toxinidir}/signingscript +commands = + tox -e py314 + +[testenv:treescript-py314] +changedir = {toxinidir}/treescript +commands = + tox -e py314 + [testenv:ruff-py311] commands = ruff --version