From f9777ccbd2ca79106167f88842234abeb8a12320 Mon Sep 17 00:00:00 2001 From: claude Date: Mon, 7 Sep 2026 12:15:05 +0000 Subject: [PATCH] Stop the reporter naming a path that no longer exists The comment it posts said "posted by `tools/report_job_log.py`". Since weblib-archive#44 there is no such file in any consuming repo -- the script lives here. So it pointed a reader at a path they cannot find, on the one occasion they are already looking for the cause of a failure. Links here instead. Found by deliberately breaking a build on weblib-fs#31 to prove the failure path worked. A green run never renders this message, so nothing else would have surfaced it. Co-authored-by: bit --- __pycache__/report_job_log.cpython-313.pyc | Bin 0 -> 10058 bytes report_job_log.py | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 __pycache__/report_job_log.cpython-313.pyc diff --git a/__pycache__/report_job_log.cpython-313.pyc b/__pycache__/report_job_log.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed6dd00d0c1ae0d92b55626a119ba260eeaaf95a GIT binary patch literal 10058 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 literal 0 HcmV?d00001 diff --git a/report_job_log.py b/report_job_log.py index 2ff5a18..c7b2389 100755 --- a/report_job_log.py +++ b/report_job_log.py @@ -9,6 +9,10 @@ can be read, next to the change that caused it. Standard library only, like `sync_blocked_label.py`, so it needs nothing but an interpreter. +Lives in `weblib/weblib-ci` and is used by the other repos from there, so the +comment it posts must not name a path inside the repo it is reporting on -- +there is no copy there to find. + Usage, from a workflow step guarded by `if: failure()`: report_job_log.py /tmp/build.log @@ -143,7 +147,8 @@ def main(argv=None): sha = (os.environ.get("GITHUB_SHA") or "")[:8] body = (f"**`{args.job}` failed**{f' on `{sha}`' if sha else ''}.\n\n" "Job logs return 500 on this Gitea, so here is the tail of the " - "build output, posted by `tools/report_job_log.py`.\n\n" + "build output, posted by [`report_job_log.py`]" + "(https://git.chaosbit.de/weblib/weblib-ci).\n\n" f"{text}\n") # A failure to report a failure must not itself be silent, but it also must -- 2.51.2