fix(backend): make .runner group-writable for the daemon #46

Merged
rcsheets merged 1 commit from fix/runner-dot-runner-group-writable into main 2026-07-16 01:45:10 +00:00
Owner

The register init container runs as root and writes .runner to the PVC as
0:0 mode 644, while the daemon container runs as the runner image's default
user (uid 1000, gid 0). Some forgejo-runner releases (e.g. v12.6.4) re-save
.runner when the daemon boots; against a non-group-writable file that fails
with "open .runner: permission denied" and the daemon crash-loops. Other
releases (e.g. v12.7.3) only read it, so whether a pool works depends on
which patch the floating :12 tag happened to pull -- a latent, node-
dependent trap.

Since the daemon shares the root group (gid 0), make the data dir and
.runner group-writable from the register script. It runs on every start
(both the fresh-register and already-registered paths) so a .runner left
non-group-writable by an older operator is repaired in place. This lets the
runner image keep floating on :12 safely.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

The register init container runs as root and writes .runner to the PVC as 0:0 mode 644, while the daemon container runs as the runner image's default user (uid 1000, gid 0). Some forgejo-runner releases (e.g. v12.6.4) re-save .runner when the daemon boots; against a non-group-writable file that fails with "open .runner: permission denied" and the daemon crash-loops. Other releases (e.g. v12.7.3) only read it, so whether a pool works depends on which patch the floating :12 tag happened to pull -- a latent, node- dependent trap. Since the daemon shares the root group (gid 0), make the data dir and .runner group-writable from the register script. It runs on every start (both the fresh-register and already-registered paths) so a .runner left non-group-writable by an older operator is repaired in place. This lets the runner image keep floating on :12 safely. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(backend): make .runner group-writable for the daemon
All checks were successful
CI (next Go) / next-go (tip) (pull_request) Successful in 4m48s
CI / ci (pull_request) Successful in 2m6s
E2E smoke test / e2e (pull_request) Successful in 3m43s
1545838a36
The register init container runs as root and writes .runner to the PVC as
0:0 mode 644, while the daemon container runs as the runner image's default
user (uid 1000, gid 0). Some forgejo-runner releases (e.g. v12.6.4) re-save
.runner when the daemon boots; against a non-group-writable file that fails
with "open .runner: permission denied" and the daemon crash-loops. Other
releases (e.g. v12.7.3) only read it, so whether a pool works depends on
which patch the floating :12 tag happened to pull -- a latent, node-
dependent trap.

Since the daemon shares the root group (gid 0), make the data dir and
.runner group-writable from the register script. It runs on every start
(both the fresh-register and already-registered paths) so a .runner left
non-group-writable by an older operator is repaired in place. This lets the
runner image keep floating on :12 safely.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Collaborator

Automated review by pr-reviewer v0.31.0 | Safety Check | Mistral Small | tracking id r-5834ed-27fef5
This is an AI-generated review and may contain mistakes.

Status: ⚠️ Unavailable


Review unavailable — the inference service isn't reachable right now. This isn't a problem with your PR. Tracking id r-5834ed-27fef5.

Comment @pr-reviewer-bot retry once it's back.

*Automated review by [pr-reviewer](https://git.brooktrails.org/brooktrails/pr-reviewer) v0.31.0 | Safety Check | Mistral Small | tracking id `r-5834ed-27fef5`* *This is an AI-generated review and may contain mistakes.* **Status:** ⚠️ Unavailable --- Review unavailable — the inference service isn't reachable right now. This isn't a problem with your PR. Tracking id `r-5834ed-27fef5`. Comment `@pr-reviewer-bot retry` once it's back.
rcsheets deleted branch fix/runner-dot-runner-group-writable 2026-07-16 01:45:11 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
brooktrails/forgejo-runner-operator!46
No description provided.