commit 96b0230b77306614e960a04cce432f192ff899ab
parent cf3790ae281e8789c94194ef92c567f9b35c2c1b
Author: Abhishek Nimalan <abhisheknimalan@gmail.com>
Date: Mon, 17 Nov 2025 17:00:40 +0000
Bug 1970961 - Add symbolication dependencies to profiling tasks using mozgeckoprofiler. r=kshampur,perftest-reviewers,taskgraph-reviewers,ahal
Ensure CI tasks run with the profiler option (`--gecko-profile` for
raptor and talos tasks, `--profiler` for mochitest tasks) include the
necessary `node`,`samply`, and `symbolicator-cli` dependencies for
symbolication with mozgeckoprofiler.
Differential Revision: https://phabricator.services.mozilla.com/D268225
Diffstat:
1 file changed, 48 insertions(+), 0 deletions(-)
diff --git a/taskcluster/gecko_taskgraph/transforms/test/other.py b/taskcluster/gecko_taskgraph/transforms/test/other.py
@@ -1071,6 +1071,54 @@ def set_profile(config, tasks):
@transforms.add
+def add_gecko_profile_symbolication_deps(config, tasks):
+ """Add symbolication dependencies when profiling raptor, talos, or mochitest tests"""
+
+ try_task_config = config.params.get("try_task_config", {})
+ gecko_profile = try_task_config.get("gecko-profile", False)
+ env = try_task_config.get("env", {})
+ startup_profile = env.get("MOZ_PROFILER_STARTUP") == "1"
+
+ for task in tasks:
+
+ if (gecko_profile and task["suite"] in ["talos", "raptor"]) or (
+ startup_profile and "mochitest" in task["suite"]
+ ):
+
+ fetches = task.setdefault("fetches", {})
+ fetch_toolchains = fetches.setdefault("toolchain", [])
+ fetch_toolchains.append("symbolicator-cli")
+
+ test_platform = task["test-platform"]
+
+ if "macosx" in test_platform and "aarch64" in test_platform:
+ fetch_toolchains.append("macosx64-aarch64-samply")
+ elif "macosx" in test_platform:
+ fetch_toolchains.append("macosx64-samply")
+ elif "win" in test_platform:
+ fetch_toolchains.append("win64-samply")
+ else:
+ fetch_toolchains.append("linux64-samply")
+
+ # Add node as a dependency for talos and mochitest tasks if needed.
+ # node is used to run symbolicator-cli, our profile symbolication tool
+ if task["suite"] == "talos" or "mochitest" in task["suite"]:
+ if "macosx" in test_platform and "aarch64" in test_platform:
+ node_toolchain = "macosx64-aarch64-node"
+ elif "macosx" in test_platform:
+ node_toolchain = "macosx64-node"
+ elif "win" in test_platform:
+ node_toolchain = "win64-node"
+ else:
+ node_toolchain = "linux64-node"
+
+ if node_toolchain not in fetch_toolchains:
+ fetch_toolchains.append(node_toolchain)
+
+ yield task
+
+
+@transforms.add
def set_tag(config, tasks):
"""Set test for a specific tag."""
tag = None