in treeherder/etl/taskcluster_pulse/handler.py [0:0]
def build_message(push_info, task, run_id, payload):
task_id = payload["status"]["taskId"]
job_run = payload["status"]["runs"][run_id]
treeherder_config = task["extra"]["treeherder"]
job = {
"buildSystem": "taskcluster",
"owner": task["metadata"]["owner"],
"taskId": f"{slugid.decode(task_id)}/{run_id}",
"retryId": run_id,
"isRetried": False,
"display": {
# jobSymbols could be an integer (i.e. Chunk ID) but need to be strings
# for treeherder
"jobSymbol": str(treeherder_config["symbol"]),
"groupSymbol": treeherder_config.get("groupSymbol", "?"),
# Maximum job name length is 140 chars...
"jobName": task["metadata"]["name"][0:139],
},
"state": state_from_run(job_run),
"result": result_from_run(job_run),
"tier": treeherder_config.get("tier", 1),
"timeScheduled": task["created"],
"jobKind": treeherder_config.get("jobKind", "other"),
"reason": treeherder_config.get("reason", "scheduled"),
"jobInfo": {
"links": [],
"summary": task["metadata"]["description"],
},
"version": 1,
}
job["origin"] = {
"kind": push_info["origin"],
"project": push_info["project"],
"revision": push_info["revision"],
}
if push_info["origin"] == "hg.mozilla.org":
job["origin"]["pushLogID"] = push_info["id"]
else:
job["origin"]["pullRequestID"] = push_info["id"]
job["origin"]["owner"] = push_info["owner"]
# Transform "collection" into an array of labels if task doesn't
# define "labels".
labels = treeherder_config.get("labels", [])
if not labels:
if not treeherder_config.get("collection"):
labels = ["opt"]
else:
labels = list(treeherder_config["collection"].keys())
job["labels"] = labels
machine = treeherder_config.get("machine", {})
job["buildMachine"] = {
"name": job_run.get("workerId", "unknown"),
"platform": machine.get("platform", task["workerType"]),
"os": machine.get("os", "-"),
"architecture": machine.get("architecture", "-"),
}
if treeherder_config.get("productName"):
job["productName"] = treeherder_config["productName"]
if treeherder_config.get("groupName"):
job["display"]["groupName"] = treeherder_config["groupName"]
return job