def setup_assemble_tasks()

in taskcluster/app_services_taskgraph/transforms/server_megazord.py [0:0]


def setup_assemble_tasks(config, tasks):
    for task in tasks:
        # Which megazord binary are we assembling?
        binary = task["attributes"]["megazord"]

        # Find server-megazord-build task dependencies for our binary.
        build_task_deps = [
            MegazordBuildDep(label, build_task.attributes["target"])
            for (label, build_task) in config.kind_dependencies_tasks.items()
            if build_task.kind == "server-megazord-build"
            and build_task.attributes.get("megazord") == binary
        ]

        task["dependencies"] = {dep.label: dep.label for dep in build_task_deps}
        task["fetches"] = {
            dep.label: [
                {
                    "artifact": f"{binary}-{dep.target}.zip",
                    "dest": binary,
                    "extract": True,
                }
            ]
            for dep in build_task_deps
        }

        artifact_path = "/builds/worker/artifacts"

        # For server megazords, we zip all binaries together and include the sha256
        task["release-artifacts"] = [f"{binary}.{ext}" for ext in ("zip", "sha256")]

        task["run"] = {
            "using": "run-commands",
            "commands": [
                ["mkdir", "-p", artifact_path],
                ["cd", f"/builds/worker/fetches/{binary}"],
                ["zip", f"{artifact_path}/{binary}.zip", "-r", "."],
                ["cd", artifact_path],
                ["eval", "sha256sum", f"{binary}.zip", ">", f"{binary}.sha256"],
            ],
        }
        yield task