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