Revision control

Copy as Markdown

# 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 taskgraph.util.dependencies import get_dependencies
from android_taskgraph.util.scriptworker import generate_beetmover_upstream_artifacts
transforms = TransformSequence()
def _get_task_type(dep_kind):
if dep_kind.startswith("build-"):
return "build"
elif dep_kind.startswith("signing-"):
return "signing"
return dep_kind
@transforms.add
def build_upstream_artifacts(config, tasks):
for task in tasks:
worker_definition = {
"upstream-artifacts": [],
}
if "artifact_map" in task["attributes"]:
# Beetmover-apk tasks use declarative artifacts.
locale = task["attributes"].get("locale")
build_type = task["attributes"]["build-type"]
worker_definition[
"upstream-artifacts"
] = generate_beetmover_upstream_artifacts(config, task, build_type, locale)
else:
for dep in get_dependencies(config, task):
paths = list(dep.attributes.get("artifacts", {}).values())
paths.extend(
[
apk_metadata["name"]
for apk_metadata in dep.attributes.get("apks", {}).values()
]
)
if dep.attributes.get("aab"):
paths.extend([dep.attributes.get("aab")])
if paths:
worker_definition["upstream-artifacts"].append(
{
"taskId": {"task-reference": f"<{dep.kind}>"},
"taskType": _get_task_type(dep.kind),
"paths": sorted(paths),
}
)
task.setdefault("worker", {}).update(worker_definition)
yield task