Repository navigation
chore: Build on the Go 1.27 toolchain - #595
Merged
Merged
Conversation
Go 1.26 stops getting security fixes when Go 1.28 ships in February 2027. Building on 1.27 now keeps the binaries patched and the fleet on one Go line. Key features/changes: - Move the build images and the devcontainer to golang:1.27 - Add a go.mod toolchain line, which actions/setup-go uses over the go line, so CI also builds and tests on 1.27 - Move golangci-lint to v2.15.0, built with Go 1.27, because v2.12 refuses a 1.27 toolchain - Leave the go line unchanged, so the binaries keep their current GODEBUG runtime defaults; raising it is a separate change
golangci-lint v2.14 and later are the first releases that can type-check the Go 1.27.3 standard library, and they bring a newer staticcheck, errcheck and goconst, and the Go 1.27 gofmt. This clears what they report so the toolchain move can merge with lint green. Key features/changes: - Exclude the controller-runtime Result.Requeue deprecation; moving to RequeueAfter changes how controllers retry, so it is left to the owners - Exclude errcheck on channel receives in tests, where staticcheck rejects the blank assignment errcheck would otherwise want - Reformat files whose alignment changed under the Go 1.27 gofmt - Exclude the per-repo findings listed in the pull request body for owners to resolve
ecv
marked this pull request as ready for review
November 2, 2026 17:16
ecv
enabled auto-merge
November 2, 2026 17:16
kevwilliams
approved these changes
Nov 2, 2026
kevwilliams
left a comment
Contributor
There was a problem hiding this comment.
Verified every workflow reads go.mod and lint set up Go 1.27.3, and no Go 1.26 pin remains in any image or workflow.
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.
Summary
Go 1.26 stops getting security fixes in February 2027. This builds and tests on Go 1.27, with runtime behaviour unchanged (the go.mod
goline stays at 1.26.4).Dockerfile,ui/consumer/Dockerfile) and the devcontainer move togolang:1.27toolchain go1.27.3, whichactions/setup-gouses over thegoline, so everygo-version-file: go.modjob runs 1.27.3This is step 1 of https://github.com/datum-cloud/infra/issues/8340 per the Go upgrade guide. Raising the
goline is a separate step 2.Test plan
Related to #594
Lint findings left for owners
golangci-lint v2.14 and later are the first releases that can type-check the Go 1.27.3 standard library (v2.13 cannot), so this moves to v2.15 and clears what its newer checks report:
Result.Requeuedeprecation is excluded rather than fixed. Moving toRequeueAfterchanges how the controllers retry, so it belongs in its own change by the owners._ =assignment errcheck would want.attachmentMethodininternal/validation/instance_validation.gois excluded: the counter is scaffolding for more attachment methods, and removing it is a code decision for the owners.