summaryrefslogtreecommitdiffstats
path: root/taskcluster/android_taskgraph/worker_types.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--taskcluster/android_taskgraph/worker_types.py156
1 files changed, 156 insertions, 0 deletions
diff --git a/taskcluster/android_taskgraph/worker_types.py b/taskcluster/android_taskgraph/worker_types.py
new file mode 100644
index 0000000000..98b08cb7e7
--- /dev/null
+++ b/taskcluster/android_taskgraph/worker_types.py
@@ -0,0 +1,156 @@
+# 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/.
+
+
+from gecko_taskgraph.transforms.task import payload_builder
+from taskgraph.util.schema import taskref_or_string
+from voluptuous import Any, Optional, Required
+
+
+@payload_builder(
+ "scriptworker-beetmover",
+ schema={
+ Required("action"): str,
+ Required("version"): str,
+ Required("artifact-map"): [
+ {
+ Required("paths"): {
+ Any(str): {
+ Required("destinations"): [str],
+ },
+ },
+ Required("taskId"): taskref_or_string,
+ }
+ ],
+ Required("beetmover-application-name"): str,
+ Required("bucket"): str,
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ }
+ ],
+ },
+)
+def build_scriptworker_beetmover_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["tags"]["worker-implementation"] = "scriptworker"
+
+ # Needed by beetmover-scriptworker
+ for map_ in worker["artifact-map"]:
+ map_["locale"] = "en-US"
+ for path_config in map_["paths"].values():
+ path_config["checksums_path"] = ""
+
+ task_def["payload"] = {
+ "artifactMap": worker["artifact-map"],
+ "releaseProperties": {"appName": worker.pop("beetmover-application-name")},
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ "version": worker["version"],
+ }
+
+ scope_prefix = config.graph_config["scriptworker"]["scope-prefix"]
+ task_def["scopes"].extend(
+ [
+ "{}:beetmover:action:{}".format(scope_prefix, worker["action"]),
+ "{}:beetmover:bucket:{}".format(scope_prefix, worker["bucket"]),
+ ]
+ )
+
+
+@payload_builder(
+ "scriptworker-pushapk",
+ schema={
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ }
+ ],
+ Required("certificate-alias"): str,
+ Required("channel"): str,
+ Required("commit"): bool,
+ Required("product"): str,
+ Required("dep"): bool,
+ },
+)
+def build_push_apk_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["tags"]["worker-implementation"] = "scriptworker"
+
+ task_def["payload"] = {
+ "certificate_alias": worker["certificate-alias"],
+ "channel": worker["channel"],
+ "commit": worker["commit"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+
+ scope_prefix = config.graph_config["scriptworker"]["scope-prefix"]
+ task_def["scopes"].append(
+ "{}:googleplay:product:{}{}".format(
+ scope_prefix, worker["product"], ":dep" if worker["dep"] else ""
+ )
+ )
+
+
+@payload_builder(
+ "scriptworker-shipit",
+ schema={
+ Required("release-name"): str,
+ },
+)
+def build_shipit_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["tags"]["worker-implementation"] = "scriptworker"
+
+ task_def["payload"] = {"release_name": worker["release-name"]}
+
+
+@payload_builder(
+ "scriptworker-tree",
+ schema={
+ Optional("upstream-artifacts"): [
+ {
+ Optional("taskId"): taskref_or_string,
+ Optional("taskType"): str,
+ Optional("paths"): [str],
+ }
+ ],
+ Required("bump"): bool,
+ Optional("bump-files"): [str],
+ Optional("push"): bool,
+ Optional("branch"): str,
+ },
+)
+def build_version_bump_payload(config, task, task_def):
+ worker = task["worker"]
+ task_def["tags"]["worker-implementation"] = "scriptworker"
+
+ scopes = task_def.setdefault("scopes", [])
+ scope_prefix = f"project:mobile:{config.params['project']}:treescript:action"
+ task_def["payload"] = {}
+
+ if worker["bump"]:
+ if not worker["bump-files"]:
+ raise Exception("Version Bump requested without bump-files")
+
+ bump_info = {}
+ bump_info["next_version"] = config.params["next_version"]
+ bump_info["files"] = worker["bump-files"]
+ task_def["payload"]["version_bump_info"] = bump_info
+ scopes.append(f"{scope_prefix}:version_bump")
+
+ if worker["push"]:
+ task_def["payload"]["push"] = True
+
+ if worker.get("force-dry-run"):
+ task_def["payload"]["dry_run"] = True
+
+ if worker.get("branch"):
+ task_def["payload"]["branch"] = worker["branch"]