Repository navigation
build: require Go 1.27 (go.mod, Dockerfile builder, README) - #133
Merged
Merged
Conversation
go.mod requires go >= 1.25.0 and the golang images set GOTOOLCHAIN=local, so the golang:1.24.7-alpine builder failed at go build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shashank Mittal (shashank-iitbhu)
requested a review
from a team
as a code owner
October 21, 2026 21:36
| @@ -1,4 +1,4 @@ | |||
| FROM golang:1.24.7-alpine AS builder | |||
| FROM golang:1.25-alpine AS builder | |||
Contributor
There was a problem hiding this comment.
1.25 has already reached EOL, lets consider migrating to 1.27
Go 1.25 is out of support (go.dev lists 1.27 and 1.26). go.mod keeps go 1.25.0 as the minimum language version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| ### Prerequisites | ||
|
|
||
| - Go 1.24.7 or later | ||
| - Go 1.25 or later (the version in `go.mod`) |
Contributor
There was a problem hiding this comment.
do we want to update this as well? 1.27?
Go 1.25 is out of support; go.dev lists 1.27 and 1.26 as the supported releases. Raise the go directive from 1.25.0 to 1.27.0 so every build (local, CI, Docker) uses a supported toolchain, matching the Dockerfile's golang:1.27-alpine builder. go mod tidy with go1.27.3 merges the third require block into the usual direct and indirect blocks. The required modules, versions and indirect markers are unchanged, and go.sum is untouched. No toolchain line is added: go 1.27.0 already selects any 1.27.x, and a toolchain line would force a specific patch download wherever GOTOOLCHAIN=auto. README's Go prerequisite now says 1.27. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
4 of 7 tasks
Divyanshu Tiwari (divyanshu-tiwari)
approved these changes
Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Moves the module and the Docker build to Go 1.27. Go 1.25 is out of support; go.dev lists 1.27 and 1.26 as the supported releases, and the latest is go1.27.3.
It also fixes
docker build -f build/Dockerfile ., which fails onmain:The builder stage uses
golang:1.24.7-alpine. The official golang images setGOTOOLCHAIN=local, so Go won't download a newer toolchain and the build stops.Changes
go.mod:go 1.25.0→go 1.27.0. Every build (local, CI, Docker) now needs a supported toolchain.toolchainline.go 1.27.0already accepts any 1.27.x. Atoolchain go1.27.xline would make machines withGOTOOLCHAIN=autodownload that exact patch, and someone would have to keep bumping it.go mod tidy(go1.27.3) only regroupedgo.mod. It merged the thirdrequireblock into the usual direct and indirect blocks. The modules, versions and// indirectmarkers are unchanged (I diffed the sorted require lists), andgo.sumdid not change.go mod tidy -diffis clean andgo mod verifypasses.build/Dockerfile: buildergolang:1.24.7-alpine→golang:1.27-alpine. The runtime stage is unchanged:alpine:3.20plus librdkafka, with no ENTRYPOINT.README.md: the Go prerequisite now says "Go 1.27 or later (the version ingo.mod)"..tool-versions, themakefiledoesn't pin a version, and there are no other Dockerfiles or docs that do. Thego-versionpins in.github/workflows/*are updated in ci: publish a linux/arm64 release binary and a multi-arch Docker image, run tests on PRs #134.Merge order
This PR and #134 don't depend on each other, so either can merge first. If this one lands first, the existing
ci.yamlandrelease.yaml(setup-gowith1.24.7) still work:GOTOOLCHAINdefaults toautothere, so Go downloads go1.27.0. That's how CI passes today with thego 1.25.0directive; the log showsgo: downloading go1.25.0. #134 then installs 1.27.x directly.Validation done locally
All checks used
golang:1.27-bookworm(go1.27.3,--platform linux/arm64,GOTOOLCHAIN=local):go build ./...passes.go test ./...passes, including with-race. The only tests are ininternal/pkg/pipeline,internal/pkg/pipeline/ackandinternal/pkg/pipeline/task, and none need external services.mainwith Go 1.27 gives the same results.go vet ./...reports threecopylocksfindings, andmainreports the same three with Go 1.27, so this PR doesn't introduce them. They come from copying a task struct that embedstask.Base(which holds anatomic.Int64, and async.RWMutexbefore fix(task): stop locking Base.SendData so concurrent workers run in parallel #132):archive.go:81,compress.go:46andfile.go:223. With-copylocks=false,go vetpasses. Fixing them is out of scope here.main(fix(task): stop locking Base.SendData so concurrent workers run in parallel #132) locally. Build, vet (without copylocks) andtest -racepass there too.docker build --platform linux/arm64 -f build/Dockerfile .succeeds.docker image inspectshowsEntrypoint=null Cmd=["/bin/sh"], so there's still no ENTRYPOINT.docker run <image> /caterpillar -conf test/pipelines/hello_name.yamlprints the greetings and exits 0.file /caterpillarreportsELF 64-bit LSB executable, ARM aarch64 ... interpreter /lib/ld-musl-aarch64.so.1.Types of changes
Checklist
🤖 Generated with Claude Code