tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bouncer_check.py (3273B)


      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 import logging
      6 from shlex import quote as shell_quote
      7 
      8 from taskgraph.transforms.base import TransformSequence
      9 from taskgraph.util import json
     10 from taskgraph.util.schema import resolve_keyed_by
     11 
     12 from gecko_taskgraph.util.attributes import release_level
     13 from gecko_taskgraph.util.scriptworker import get_release_config
     14 
     15 logger = logging.getLogger(__name__)
     16 
     17 transforms = TransformSequence()
     18 
     19 
     20 @transforms.add
     21 def add_command(config, jobs):
     22    for job in jobs:
     23        command = [
     24            "python",
     25            "testing/mozharness/scripts/release/bouncer_check.py",
     26        ]
     27        job["run"].update({
     28            "using": "mach",
     29            "mach": command,
     30        })
     31        yield job
     32 
     33 
     34 @transforms.add
     35 def add_previous_versions(config, jobs):
     36    release_config = get_release_config(config)
     37    if not release_config.get("partial_versions"):
     38        for job in jobs:
     39            yield job
     40    else:
     41        extra_params = []
     42        for partial in release_config["partial_versions"].split(","):
     43            extra_params.append(
     44                "--previous-version={}".format(partial.split("build")[0].strip())
     45            )
     46 
     47        for job in jobs:
     48            job["run"]["mach"].extend(extra_params)
     49            yield job
     50 
     51 
     52 @transforms.add
     53 def handle_keyed_by(config, jobs):
     54    """Resolve fields that can be keyed by project, etc."""
     55    fields = [
     56        "run.config",
     57        "run.product-field",
     58        "run.extra-config",
     59    ]
     60 
     61    release_config = get_release_config(config)
     62    version = release_config["version"]
     63 
     64    for job in jobs:
     65        for field in fields:
     66            resolve_keyed_by(
     67                item=job,
     68                field=field,
     69                item_name=job["name"],
     70                **{
     71                    "project": config.params["project"],
     72                    "release-level": release_level(config.params),
     73                    "release-type": config.params["release_type"],
     74                },
     75            )
     76 
     77        for cfg in job["run"]["config"]:
     78            job["run"]["mach"].extend(["--config", cfg])
     79 
     80        if config.kind == "cron-bouncer-check":
     81            job["run"]["mach"].extend([
     82                "--product-field={}".format(job["run"]["product-field"]),
     83                "--products-url={}".format(job["run"]["products-url"]),
     84            ])
     85            del job["run"]["product-field"]
     86            del job["run"]["products-url"]
     87        elif config.kind == "release-bouncer-check":
     88            job["run"]["mach"].append(f"--version={version}")
     89 
     90        del job["run"]["config"]
     91 
     92        if "extra-config" in job["run"]:
     93            env = job["worker"].setdefault("env", {})
     94            env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(
     95                job["run"]["extra-config"], sort_keys=True
     96            )
     97            del job["run"]["extra-config"]
     98 
     99        yield job
    100 
    101 
    102 @transforms.add
    103 def command_to_string(config, jobs):
    104    """Convert command to string to make it work properly with run-task"""
    105    for job in jobs:
    106        job["run"]["mach"] = " ".join(map(shell_quote, job["run"]["mach"]))
    107        yield job