tor-browser

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

merge_automation.py (2594B)


      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 update generation task into an actual task description.
      6 """
      7 
      8 from taskgraph.transforms.base import TransformSequence
      9 from taskgraph.util.schema import resolve_keyed_by
     10 
     11 transforms = TransformSequence()
     12 
     13 
     14 @transforms.add
     15 def handle_keyed_by(config, tasks):
     16    """Resolve fields that can be keyed by platform, etc."""
     17    if "merge_config" not in config.params:
     18        return
     19    merge_config = config.params["merge_config"]
     20    fields = [
     21        "routes",
     22        "worker.push",
     23        "scopes",
     24        "worker-type",
     25        "worker.l10n-bump-info",
     26        "worker.lando-repo",
     27        "worker.matrix-rooms",
     28        "worker.actions",
     29    ]
     30    for task in tasks:
     31        for field in fields:
     32            resolve_keyed_by(
     33                task,
     34                field,
     35                item_name=task["name"],
     36                **{
     37                    "project": config.params["project"],
     38                    "release-type": config.params["release_type"],
     39                    "behavior": merge_config["behavior"],
     40                    "level": config.params["level"],
     41                },
     42            )
     43 
     44        yield task
     45 
     46 
     47 @transforms.add
     48 def update_labels(config, tasks):
     49    for task in tasks:
     50        merge_config = config.params["merge_config"]
     51        task["label"] = "merge-{}".format(merge_config["behavior"])
     52        treeherder = task.get("treeherder", {})
     53        treeherder["symbol"] = "Rel({})".format(merge_config["behavior"])
     54        task["treeherder"] = treeherder
     55        yield task
     56 
     57 
     58 @transforms.add
     59 def add_payload_config(config, tasks):
     60    for task in tasks:
     61        if "merge_config" not in config.params:
     62            break
     63        merge_config = config.params["merge_config"]
     64        worker = task["worker"]
     65 
     66        assert len(worker["actions"][0].keys()) == 1
     67        action_name = list(worker["actions"][0].keys())[0]
     68 
     69        # Override defaults, useful for testing.
     70        for field in [
     71            "from-repo",
     72            "from-branch",
     73            "to-repo",
     74            "to-branch",
     75            "fetch-version-from",
     76            "lando-repo",
     77        ]:
     78            if merge_config.get(field):
     79                worker["actions"][0][action_name][field] = merge_config[field]
     80 
     81        worker["force-dry-run"] = merge_config["force-dry-run"]
     82        if merge_config.get("push"):
     83            worker["push"] = merge_config["push"]
     84        yield task