v1.41.0
Upgrade Go version to 1.24
Update the Go version used to 1.24
. This affects:
Dockerfile:
- FROM golang:1.23 AS builder
+ FROM golang:1.24 AS builder
.devcontainer/devcontainer.json:
- "image": "golang:1.23",
+ "image": "golang:1.24",
go.mod:
- go 1.23.0
+ go 1.24.0
See #6954 for more details.
Upgrade golangci-lint and use v2 config
Update golangci-lint usage across the project:
Makefile:
- GOLANGCI_LINT_VERSION ?= v1.63.4
+ GOLANGCI_LINT_VERSION ?= v2.1.0
- $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
+ $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/v2/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
GitHub Actions Workflow:
- uses: golangci/golangci-lint-action@v6
+ uses: golangci/golangci-lint-action@v8
.golangci.yml:
Convert to v2 layout with keys like version
, linters
, settings
, formatters
, exclusions
.
You might want to copy and paste the file from the Memcached sample from the tag release v1.40.0
: testdata/go/v4/memcached-operator/.golangci.yml
See #6954 for more details.
Upgrade controller-gen to v0.18.0
Update controller-gen tooling and annotations:
Makefile:
- CONTROLLER_TOOLS_VERSION ?= v0.17.2
+ CONTROLLER_TOOLS_VERSION ?= v0.18.0
Run make generate
to regenerate code and manifests with the new version.
See #6954 for more details.
Upgrade controller-runtime to v0.21.0
Update the go.mod
import:
- sigs.k8s.io/controller-runtime v0.20.4
+ sigs.k8s.io/controller-runtime v0.21.0
Run go mod tidy
to upgrade the k8s dependencies.
See #6954 for more details.
Add cluster setup for e2e tests in Makefile and update CI workflow
Remove direct Kind commands in GitHub workflows:
Removed:
- name: Create kind cluster
run: kind create cluster
Added to Makefile:
KIND_CLUSTER ?= <project-name>-test-e2e
.PHONY: setup-test-e2e
setup-test-e2e: ## Set up a Kind cluster for e2e tests if it does not exist
@command -v $(KIND) >/dev/null 2>&1 || { \
echo "Kind is not installed. Please install Kind manually."; \
exit 1; \
}
@case "$$($(KIND) get clusters)" in \
*"$(KIND_CLUSTER)"*) \
echo "Kind cluster '$(KIND_CLUSTER)' already exists. Skipping creation." ;; \
*) \
echo "Creating Kind cluster '$(KIND_CLUSTER)'..."; \
$(KIND) create cluster --name $(KIND_CLUSTER) ;; \
esac
.PHONY: cleanup-test-e2e
cleanup-test-e2e:
$(KIND) delete cluster --name $(KIND_CLUSTER)
Update test-e2e
target to call these appropriately.
See #6954 for more details.