fix(ci): ephemeral runners reach Forgejo's public name over the tailnet #280
Loading…
Reference in a new issue
No description provided.
Delete branch "jfraeys/fix/runner-forgejo-over-tailnet"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes the coaching_site `Build artifacts` failure (and every `upload-artifact` from an ephemeral runner).
Cause (from the coaching_site diagnostic run and Forgejo's own log). The runner talks to Forgejo over the tailnet (`ACTIONS_RUNTIME_URL=http://100.64.0.3:3000/...`), so the artifact-container `POST` works. Forgejo then returns an upload URL built from its public address (`ROOT_URL`, `https://git.jfraeys.com/...`). The CI VM cannot reach that name (a plain `curl` timed out after 20 s; the name has both A and AAAA records), so no chunk is ever sent and the finalize `PATCH` fails with `lstat .../actions_artifacts/tmp: no such file or directory` (500). Even a 1 KB artifact fails. Traefik never logs it; Forgejo logs only the POST and the failing PATCHes. Not memory, disk, bans, size, the cache or tag:ci (the failure predates all of them, e.g. runs 748 on Oct 15, 1021 on Oct 17, 1046 on Oct 18).
Change.
Not found: why the public name is unreachable from a CI VM at all (both families). This works around it for runners; run `curl -4 -sv` / `curl -6 -sv` against `https://git.jfraeys.com/api/healthz` from a runner if you want that answered.
Rollout (two deploys, in this order)
Rollback: revert and redeploy both steps; nothing else depends on the entry.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ge5tovcwdEUBtPwUktsZZZ