Source code
Revision control
Copy as Markdown
Other Tools
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
from collections import defaultdict
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.dependencies import get_primary_dependency
from gecko_taskgraph.util.scriptworker import (
generate_artifact_registry_gcs_sources_rpm,
get_beetmover_repo_action_scope,
get_beetmover_yum_repo_scope,
)
transforms = TransformSequence()
@transforms.add
def beetmover_rpm(config, tasks):
products_tasks = defaultdict(lambda: [])
for task in tasks:
dep = get_primary_dependency(config, task)
assert dep
product = dep.attributes.get("shipping_product")
products_tasks[product].append(task)
for product, product_tasks in products_tasks.items():
dependencies = {}
gcs_sources = []
for task in product_tasks:
dep = get_primary_dependency(config, task)
assert dep
dependencies[dep.label] = dep.label
gcs_sources.extend(generate_artifact_registry_gcs_sources_rpm(dep))
description = f"Beetmover YUM submission for the {config.params['release_type']} {product} .rpm packages"
platform = f"{product}-release/opt"
treeherder = {
"platform": platform,
"tier": 1,
"kind": "other",
"symbol": "BM-rpm",
}
yum_repo_scope = get_beetmover_yum_repo_scope(config)
repo_action_scope = get_beetmover_repo_action_scope(config)
attributes = {
"required_signoffs": ["mar-signing"],
"shippable": True,
"shipping_product": product,
}
worker = {
"implementation": "beetmover-import-from-gcs-to-artifact-registry",
"product": product,
"gcs-sources": gcs_sources,
}
task = {
"label": f"{config.kind}-{platform}",
"description": description,
"worker-type": "beetmover",
"treeherder": treeherder,
"scopes": [yum_repo_scope, repo_action_scope],
"attributes": attributes,
"shipping-phase": "ship",
"shipping-product": product,
"dependencies": dependencies,
"worker": worker,
}
yield task