release_generate_checksums.py (1510B)
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 checksums task into an actual task description. 6 """ 7 8 import copy 9 import logging 10 11 from taskgraph.transforms.base import TransformSequence 12 from taskgraph.util.schema import resolve_keyed_by 13 14 from gecko_taskgraph.util.attributes import release_level 15 from gecko_taskgraph.util.scriptworker import get_release_config 16 17 logger = logging.getLogger(__name__) 18 19 transforms = TransformSequence() 20 21 22 @transforms.add 23 def handle_keyed_by(config, jobs): 24 """Resolve fields that can be keyed by project, etc.""" 25 fields = [ 26 "run.config", 27 "run.extra-config", 28 ] 29 for job in jobs: 30 job = copy.deepcopy(job) 31 for field in fields: 32 resolve_keyed_by( 33 item=job, 34 field=field, 35 item_name=job["name"], 36 **{"release-level": release_level(config.params)}, 37 ) 38 yield job 39 40 41 @transforms.add 42 def interpolate(config, jobs): 43 release_config = get_release_config(config) 44 for job in jobs: 45 mh_options = list(job["run"]["options"]) 46 job["run"]["options"] = [ 47 option.format( 48 version=release_config["version"], 49 build_number=release_config["build_number"], 50 ) 51 for option in mh_options 52 ] 53 yield job