beetmover_repackage_rpm.py (3441B)
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 beetmover-repackage-rpm task into an actual task description. 6 """ 7 8 from taskgraph.transforms.base import TransformSequence 9 from taskgraph.util.dependencies import get_primary_dependency 10 from taskgraph.util.schema import Schema 11 from taskgraph.util.treeherder import inherit_treeherder_from_dep, replace_group 12 from voluptuous import Required 13 14 from gecko_taskgraph.transforms.beetmover import craft_release_properties 15 from gecko_taskgraph.transforms.task import task_description_schema 16 from gecko_taskgraph.util.scriptworker import ( 17 generate_beetmover_artifact_map, 18 generate_beetmover_upstream_artifacts, 19 get_beetmover_action_scope, 20 get_beetmover_bucket_scope, 21 ) 22 23 transforms = TransformSequence() 24 25 beetmover_description_schema = Schema({ 26 Required("attributes"): task_description_schema["attributes"], 27 Required("dependencies"): task_description_schema["dependencies"], 28 Required("label"): str, 29 Required("name"): str, 30 Required("shipping-phase"): task_description_schema["shipping-phase"], 31 Required("task-from"): task_description_schema["task-from"], 32 }) 33 34 transforms.add_validate(beetmover_description_schema) 35 36 37 @transforms.add 38 def make_beetmover_rpm_task(config, jobs): 39 for job in jobs: 40 dep_job = get_primary_dependency(config, job) 41 assert dep_job 42 43 attributes = job["attributes"] 44 platform = attributes["build_platform"] 45 46 bucket_scope = get_beetmover_bucket_scope(config) 47 action_scope = get_beetmover_action_scope(config) 48 49 dependencies = {"repackage-rpm": dep_job.label} 50 treeherder = inherit_treeherder_from_dep(job, dep_job) 51 upstream_symbol = dep_job.task["extra"]["treeherder"]["symbol"] 52 treeherder.setdefault("symbol", replace_group(upstream_symbol, "BMR")) 53 54 task = { 55 "label": job["label"], 56 "description": f"Publish RPM packages for {platform}", 57 "worker-type": "beetmover", 58 "scopes": [bucket_scope, action_scope], 59 "dependencies": dependencies, 60 "attributes": attributes, 61 "run-on-projects": dep_job.attributes.get("run_on_projects"), 62 "treeherder": treeherder, 63 "shipping-phase": job["shipping-phase"], 64 "shipping-product": job.get("shipping-product"), 65 } 66 67 locales = ["en-US"] 68 for dep_task in config.kind_dependencies_tasks.values(): 69 if dep_task.kind in ("shippable-l10n-signing", "l10n"): 70 if dep_task.attributes.get("build_platform") == platform: 71 task_locales = dep_task.attributes.get( 72 "chunk_locales", dep_task.attributes.get("all_locales", []) 73 ) 74 locales.extend(task_locales) 75 76 task["worker"] = { 77 "implementation": "beetmover", 78 "release-properties": craft_release_properties(config, task), 79 "upstream-artifacts": generate_beetmover_upstream_artifacts( 80 config, task, platform=platform, locale=locales 81 ), 82 "artifact-map": generate_beetmover_artifact_map( 83 config, task, platform=platform, locale=locales 84 ), 85 } 86 87 yield task