chore(runner-images): build forgejo-runner-go on Go 1.27 #53

Merged
rcsheets merged 1 commit from chore/runner-go-1.27 into main 2026-09-17 05:24:05 +00:00
Owner

Builds forgejo-runner-go on Go 1.27 (RUNNER_GO_VERSION, the Containerfile.golang ARG default, and the runner-images README row). The dind and tofu images are untouched.

Why

The Go runner image bundles the toolchain -- pools using it run host-mode, with no container: and no setup step -- so the image's Go is the only Go a job gets. On 1.26-alpine that blocks brooktrails/gllm from moving its go.mod to 1.27 (gllm#74):

go: go.mod requires go >= 1.27 (running go 1.26.5; GOTOOLCHAIN=local)

There is no fallback: the official golang images set GOTOOLCHAIN=local, so a newer go directive is an error rather than a toolchain download. (The gllm CI workflow now prints go version and GOTOOLCHAIN on every run, which is how this was pinned down.)

Rolling it out

The build target guards on main (check-main-branch), so after merge:

make container-build-runner-go
make container-push-runner-images     # or push the two runner-go tags only

Then the pool pods need the new image. apps/forgejo/runner/runnerpool-gllm-go.yaml pins the moving forgejo-runner-go:12-latest and sets no imagePullPolicy, so Kubernetes defaults to IfNotPresent for that non-latest tag: a node that already cached 12-latest keeps the old one, and deleting the pod is not enough. Either pin the pool to the immutable 12-<VERSION> tag the same build publishes (deterministic, and it rolls through Flux), or set imagePullPolicy: Always on the pool.

Once the pool runs the new image, gllm#74 can be re-run.

🤖 Generated with Claude Code

Builds `forgejo-runner-go` on **Go 1.27** (`RUNNER_GO_VERSION`, the `Containerfile.golang` ARG default, and the runner-images README row). The dind and tofu images are untouched. ## Why The Go runner image bundles the toolchain -- pools using it run host-mode, with no `container:` and no setup step -- so **the image's Go is the only Go a job gets**. On `1.26-alpine` that blocks `brooktrails/gllm` from moving its `go.mod` to 1.27 ([gllm#74](https://git.brooktrails.org/brooktrails/gllm/pulls/74)): ``` go: go.mod requires go >= 1.27 (running go 1.26.5; GOTOOLCHAIN=local) ``` There is no fallback: the official `golang` images set `GOTOOLCHAIN=local`, so a newer `go` directive is an error rather than a toolchain download. (The gllm CI workflow now prints `go version` and `GOTOOLCHAIN` on every run, which is how this was pinned down.) ## Rolling it out The build target guards on `main` (`check-main-branch`), so after merge: ``` make container-build-runner-go make container-push-runner-images # or push the two runner-go tags only ``` Then the pool pods need the new image. `apps/forgejo/runner/runnerpool-gllm-go.yaml` pins the moving `forgejo-runner-go:12-latest` and sets no `imagePullPolicy`, so Kubernetes defaults to `IfNotPresent` for that non-`latest` tag: a node that already cached `12-latest` keeps the old one, and deleting the pod is not enough. Either pin the pool to the immutable `12-<VERSION>` tag the same build publishes (deterministic, and it rolls through Flux), or set `imagePullPolicy: Always` on the pool. Once the pool runs the new image, gllm#74 can be re-run. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chore(runner-images): build forgejo-runner-go on Go 1.27
All checks were successful
CI (next Go) / next-go (tip) (pull_request) Successful in 15m52s
CI / ci (pull_request) Successful in 1m56s
09eeccfb28
The Go runner image bundles the toolchain -- pools using it run host-mode with
no `container:` and no setup step -- so the image's Go is the only Go a job
gets. On 1.26-alpine that stopped brooktrails/gllm from moving its go.mod to
1.27:

  go: go.mod requires go >= 1.27 (running go 1.26.5; GOTOOLCHAIN=local)

There is no download path to fall back on: the official golang images set
GOTOOLCHAIN=local, so a newer go.mod directive is an error rather than a
toolchain fetch. Bumping the base is the whole fix.

The pin moves in the Makefile (the single source of truth), with the
Containerfile's ARG default and the runner-images README table kept in step.
The dind and tofu images are untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rcsheets deleted branch chore/runner-go-1.27 2026-09-17 05:24:05 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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!53
No description provided.