# 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 # file, You can obtain one at http://mozilla.org/MPL/2.0/. """
Transform the per-locale balrog task into an actual task description. """
from taskgraph.transforms.base import TransformSequence from taskgraph.util.dependencies import get_primary_dependency from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by from taskgraph.util.treeherder import replace_group from voluptuous import Optional, Required
from gecko_taskgraph.transforms.task import task_description_schema from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
balrog_description_schema = Schema(
{ # unique label to describe this balrog task, defaults to balrog-{dep.label}
Required("label"): str,
Optional( "update-no-wnp",
description="Whether the parallel `-No-WNP` blob should be updated as well.",
): optionally_keyed_by("release-type", bool), # treeherder is allowed here to override any defaults we use for beetmover. See # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the # below transforms for defaults of various values.
Optional("treeherder"): task_description_schema["treeherder"],
Optional("attributes"): task_description_schema["attributes"],
Optional("dependencies"): task_description_schema["dependencies"],
Optional("task-from"): task_description_schema["task-from"], # Shipping product / phase
Optional("shipping-product"): task_description_schema["shipping-product"],
Optional("shipping-phase"): task_description_schema["shipping-phase"],
}
)
transforms = TransformSequence()
@transforms.add def remove_name(config, jobs): for job in jobs: if"name"in job: del job["name"] yield job
@transforms.add def handle_keyed_by(config, jobs): """Resolve fields that can be keyed by platform, etc."""
fields = [ "update-no-wnp",
] for job in jobs: for field in fields:
resolve_keyed_by(
item=job,
field=field,
item_name=job["label"],
**{ "project": config.params["project"], "release-type": config.params["release_type"],
},
) yield job
@transforms.add def make_task_description(config, jobs): for job in jobs:
dep_job = get_primary_dependency(config, job) assert dep_job
dependencies = {"beetmover": dep_job.label} # don't block on startup-test for release/esr, they block on manual testing anyway if config.params["release_type"] in ("nightly", "beta", "release-rc"): for kind_dep in config.kind_dependencies_tasks.values(): if (
kind_dep.kind == "startup-test" and kind_dep.attributes["build_platform"]
== attributes.get("build_platform") and kind_dep.attributes["build_type"]
== attributes.get("build_type") and kind_dep.attributes.get("shipping_product")
== job.get("shipping-product")
):
dependencies["startup-test"] = kind_dep.label # We need the release created in balrog first
soft_dependencies = [
dep.label for dep in config.kind_dependencies_tasks.values() if dep.kind == "release-balrog-submit-toplevel" and dep.attributes.get("shipping_product") == job.get("shipping-product")
]
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.