fune/taskcluster/android_taskgraph/routes.py

58 lines
2 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/.
import time
from gecko_taskgraph.transforms.task import index_builder
SIGNING_ROUTE_TEMPLATES = [
"index.{trust_domain}.v3.{project}.{artifact_type}.{variant}.latest.{artifact_name}",
"index.{trust_domain}.v3.{project}.{artifact_type}.{variant}.{build_date}.revision.{head_rev}.{artifact_name}",
"index.{trust_domain}.v3.{project}.{artifact_type}.{variant}.{build_date}.latest.{artifact_name}",
"index.{trust_domain}.v3.{project}.{artifact_type}.{variant}.revision.{head_rev}.{artifact_name}",
]
@index_builder("signing")
def add_signing_indexes(config, task):
routes = task.setdefault("routes", [])
if config.params["level"] != "3":
return task
subs = config.params.copy()
subs["build_date"] = time.strftime(
"%Y.%m.%d", time.gmtime(config.params["build_date"])
)
subs["trust_domain"] = config.graph_config["trust-domain"]
subs["variant"] = task["attributes"]["build-type"]
if task["attributes"].get("component"):
subs["artifact_type"] = "components"
subs["artifact_name"] = task["attributes"]["component"]
new_signing_routes = [
template.format(**subs)
for template in SIGNING_ROUTE_TEMPLATES
]
elif task["attributes"].get("apks"):
subs["artifact_type"] = "apks"
new_signing_routes = []
for abi in task["attributes"]["apks"].keys():
subs["artifact_name"] = abi
new_signing_routes.extend([
template.format(**subs)
for template in SIGNING_ROUTE_TEMPLATES
])
elif task["attributes"].get("aab"):
# no indexes for AAB signing
return task
else:
raise NotImplementedError(f"Unsupported artifact_type. Task: {task}")
routes.extend(new_signing_routes)
return task