tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

signing_android_app.py (3118B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 """
      5 Apply some defaults and minor modifications to the jobs defined in the
      6 APK and AAB signing kinds.
      7 """
      8 
      9 from taskgraph.transforms.base import TransformSequence
     10 from taskgraph.util.schema import resolve_keyed_by
     11 
     12 transforms = TransformSequence()
     13 
     14 PRODUCTION_SIGNING_BUILD_TYPES = [
     15    "focus-nightly",
     16    "focus-beta",
     17    "focus-release",
     18    "klar-release",
     19    "fenix-nightly",
     20    "fenix-beta",
     21    "fenix-release",
     22    "fenix-beta-mozillaonline",
     23    "fenix-release-mozillaonline",
     24 ]
     25 
     26 
     27 @transforms.add
     28 def resolve_keys(config, tasks):
     29    for task in tasks:
     30        for key in (
     31            "index",
     32            "signing-format",
     33            "notify",
     34            "treeherder.platform",
     35        ):
     36            resolve_keyed_by(
     37                task,
     38                key,
     39                item_name=task["name"],
     40                **{
     41                    "build-type": task["attributes"]["build-type"],
     42                    "level": config.params["level"],
     43                },
     44            )
     45        yield task
     46 
     47 
     48 @transforms.add
     49 def set_worker_type(config, tasks):
     50    for task in tasks:
     51        worker_type = "linux-depsigning"
     52        if (
     53            str(config.params["level"]) == "3"
     54            and task["attributes"]["build-type"] in PRODUCTION_SIGNING_BUILD_TYPES
     55        ):
     56            worker_type = "linux-signing"
     57        task["worker-type"] = worker_type
     58        yield task
     59 
     60 
     61 @transforms.add
     62 def set_signing_type(config, tasks):
     63    for task in tasks:
     64        signing_type = "dep-signing"
     65        if str(config.params["level"]) == "3":
     66            if task["attributes"]["build-type"] in ("fenix-beta", "fenix-release"):
     67                signing_type = "fennec-production-signing"
     68            elif task["attributes"]["build-type"] in PRODUCTION_SIGNING_BUILD_TYPES:
     69                signing_type = "production-signing"
     70        task["worker"]["signing-type"] = signing_type
     71        yield task
     72 
     73 
     74 @transforms.add
     75 def set_index_job_name(config, tasks):
     76    for task in tasks:
     77        if task.get("index"):
     78            task["index"]["job-name"] = task["attributes"]["build-type"]
     79        yield task
     80 
     81 
     82 @transforms.add
     83 def set_signing_attributes(config, tasks):
     84    for task in tasks:
     85        task["attributes"]["signed"] = True
     86        yield task
     87 
     88 
     89 @transforms.add
     90 def set_signing_format(config, tasks):
     91    for task in tasks:
     92        signing_format = task.pop("signing-format")
     93        for upstream_artifact in task["worker"]["upstream-artifacts"]:
     94            upstream_artifact["formats"] = [signing_format]
     95        yield task
     96 
     97 
     98 @transforms.add
     99 def format_email(config, tasks):
    100    version = config.params["version"]
    101 
    102    for task in tasks:
    103        if "notify" in task:
    104            email = task["notify"].get("email")
    105            if email:
    106                email["subject"] = email["subject"].format(version=version)
    107                email["content"] = email["content"].format(version=version)
    108 
    109        yield task