CI: keep each job's output as a logs artifact #159

Merged
littlefox merged 2 commits from ci-logs-artifacts into main 2026-10-19 12:08:14 +00:00
Owner

CI job logs readable from here: every run step's output is tee'd to ci-logs/.log by a workflow default shell, uploaded as logs- (always, failed or not), and fetched with tools/forge.py logs RUN [--job J]. ci.yml and packaging.yml. Forgejo 15 has no log API, and its web log endpoint returns no steps to a token.

Verified: the shell template locally (a failing step still fails with its exit code and stops at the first error, and both steps are logged); this PR's own CI run, read with forge.py logs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

CI job logs readable from here: every run step's output is tee'd to ci-logs/<job>.log by a workflow default shell, uploaded as logs-<job> (always, failed or not), and fetched with `tools/forge.py logs RUN [--job J]`. ci.yml and packaging.yml. Forgejo 15 has no log API, and its web log endpoint returns no steps to a token. Verified: the shell template locally (a failing step still fails with its exit code and stops at the first error, and both steps are logged); this PR's own CI run, read with forge.py logs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
CI: keep each job's output as a logs artifact, read with forge.py logs
Some checks failed
packaging / fedora (pull_request) Has started running
packaging / nix (pull_request) Has started running
packaging / arch (pull_request) Successful in 13m38s
ci / check (push) Successful in 13m55s
ci / desktop (push) Successful in 18m55s
ci / e2e (push) Successful in 26m9s
packaging / debian (pull_request) Successful in 26m13s
packaging / release (pull_request) Has been cancelled
5e8bf6495a
Forgejo has no API for job logs, and the web page only gives them to a
logged-in browser, so a failed job couldn't be diagnosed from here (the
desktop failure on #158). Every run step's output is now also written
to ci-logs/<job>.log by a default shell and uploaded as logs-<job>,
which a token can fetch. CLAUDE.md gets the command, and the three
clippy runs CI does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
forge.py logs: download by the run's id, list by its number
All checks were successful
packaging / arch (pull_request) Successful in 10m39s
packaging / debian (pull_request) Successful in 25m26s
ci / check (push) Successful in 13m34s
packaging / nix (pull_request) Successful in 25m52s
ci / e2e (push) Successful in 29m10s
packaging / fedora (pull_request) Successful in 33m33s
ci / desktop (push) Successful in 18m29s
packaging / release (pull_request) Has been skipped
d714cb69d4
The artifact list takes the run number shown everywhere, but the
download takes Forgejo's internal run id; with the number it fetched
another run's artifact or none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
littlefox referenced this pull request from a commit 2026-10-19 21:34:01 +00:00
Sign in to join this conversation.
No description provided.