merge_automation.py (2594B)
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 Transform the update generation task into an actual task description. 6 """ 7 8 from taskgraph.transforms.base import TransformSequence 9 from taskgraph.util.schema import resolve_keyed_by 10 11 transforms = TransformSequence() 12 13 14 @transforms.add 15 def handle_keyed_by(config, tasks): 16 """Resolve fields that can be keyed by platform, etc.""" 17 if "merge_config" not in config.params: 18 return 19 merge_config = config.params["merge_config"] 20 fields = [ 21 "routes", 22 "worker.push", 23 "scopes", 24 "worker-type", 25 "worker.l10n-bump-info", 26 "worker.lando-repo", 27 "worker.matrix-rooms", 28 "worker.actions", 29 ] 30 for task in tasks: 31 for field in fields: 32 resolve_keyed_by( 33 task, 34 field, 35 item_name=task["name"], 36 **{ 37 "project": config.params["project"], 38 "release-type": config.params["release_type"], 39 "behavior": merge_config["behavior"], 40 "level": config.params["level"], 41 }, 42 ) 43 44 yield task 45 46 47 @transforms.add 48 def update_labels(config, tasks): 49 for task in tasks: 50 merge_config = config.params["merge_config"] 51 task["label"] = "merge-{}".format(merge_config["behavior"]) 52 treeherder = task.get("treeherder", {}) 53 treeherder["symbol"] = "Rel({})".format(merge_config["behavior"]) 54 task["treeherder"] = treeherder 55 yield task 56 57 58 @transforms.add 59 def add_payload_config(config, tasks): 60 for task in tasks: 61 if "merge_config" not in config.params: 62 break 63 merge_config = config.params["merge_config"] 64 worker = task["worker"] 65 66 assert len(worker["actions"][0].keys()) == 1 67 action_name = list(worker["actions"][0].keys())[0] 68 69 # Override defaults, useful for testing. 70 for field in [ 71 "from-repo", 72 "from-branch", 73 "to-repo", 74 "to-branch", 75 "fetch-version-from", 76 "lando-repo", 77 ]: 78 if merge_config.get(field): 79 worker["actions"][0][action_name][field] = merge_config[field] 80 81 worker["force-dry-run"] = merge_config["force-dry-run"] 82 if merge_config.get("push"): 83 worker["push"] = merge_config["push"] 84 yield task