Files
Evandro Baginski 2c29546c7d Bug 2050585 - Use release_level from mozilla-taskgraph in gecko_taskgraph transforms r=taskgraph-reviewers,releng-reviewers,ahal
`release_level` now lives in `mozilla-taskgraph` and takes the project's release
branches as an argument: `release_level(release_branches, params)`.

Migrate the gecko_taskgraph transform consumers to import it from
mozilla_taskgraph and pass `graph_config["release-branches"]`, and add the
`release-branches` mapping to `taskcluster/config.yml` (migrated from
`PROJECT_RELEASE_BRANCHES`; comm projects omitted since comm provides its own).

Differential Revision: https://phabricator.services.mozilla.com/D308853
2026-06-26 22:31:51 +00:00

81 lines
2.9 KiB
Python

# 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/.
"""
Transform the release-flatpak-push kind into an actual task description.
"""
from typing import Optional
from mozilla_taskgraph.util.attributes import release_level
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.schema import Schema
from gecko_taskgraph.transforms.task import TaskDescriptionSchema
from gecko_taskgraph.util.scriptworker import add_scope_prefix
class PushFlatpakDescriptionSchema(Schema, kw_only=True):
name: str
task_from: TaskDescriptionSchema.__annotations__["task_from"] # noqa: F821
dependencies: TaskDescriptionSchema.__annotations__["dependencies"] # noqa: F821
description: TaskDescriptionSchema.__annotations__["description"] # noqa: F821
treeherder: TaskDescriptionSchema.__annotations__["treeherder"] # noqa: F821
run_on_projects: TaskDescriptionSchema.__annotations__["run_on_projects"] # noqa: F821
worker_type: str
worker: object # noqa: F821
scopes: Optional[list[str]] = None
shipping_phase: TaskDescriptionSchema.__annotations__["shipping_phase"] # noqa: F821
shipping_product: TaskDescriptionSchema.__annotations__["shipping_product"] # noqa: F821
flathub_scope: str
extra: TaskDescriptionSchema.__annotations__["extra"] = None
attributes: TaskDescriptionSchema.__annotations__["attributes"] = None
run_on_repo_type: TaskDescriptionSchema.__annotations__["run_on_repo_type"] = None
transforms = TransformSequence()
transforms.add_validate(PushFlatpakDescriptionSchema)
@transforms.add
def make_task_description(config, jobs):
for job in jobs:
if len(job["dependencies"]) != 1:
raise Exception("Exactly 1 dependency is required")
job["worker"]["upstream-artifacts"] = generate_upstream_artifacts(
job["dependencies"]
)
if (
release_level(config.graph_config["release-branches"], config.params)
== "production"
):
dep_job = config.kind_dependencies_tasks[
next(iter(job["dependencies"].values()))
]
job.setdefault("scopes", []).append(
add_scope_prefix(
config,
"{}:{}:{}".format(
job["flathub-scope"],
job["worker"]["channel"],
dep_job.attributes["flatpak_name"],
),
)
)
del job["flathub-scope"]
yield job
def generate_upstream_artifacts(dependencies):
return [
{
"taskId": {"task-reference": f"<{task_kind}>"},
"taskType": "build",
"paths": ["public/build/target.flatpak.tar.xz"],
}
for task_kind in dependencies.keys()
]