Align project toolchain and runtime images to Go 1.26#1
Conversation
|
@copilot crd api Version has to be puller. corewire.io. We also need node selectors and tolerations. We also need concurrency and a pull policy as well as Re-pull policy in case someone uses moving Tags like latest |
Updated in commit README now sets the CRD API version to |
|
@copilot we also need to talk about tooling. I want to use go as well as the most modern framework for operators. Also Plan for automated releases (like in Breee/kubeswitch) , e2e tests using kind and Kyverno chainsaw. Also automatically generate docs using Hugo hextra (like in breee/outline-cli). Always also keep in mind that we need AI friendly docs (see Breee/ai-friendly-docs). We will also need to Plan a simple helmchart and Container images in arm64 and amd64 published to github registry. The dev tooling should be splendid. Im also interested in https://github.com/tgoodwin/Kamera and https://thenewstack.io/kamera-uses-simulation-to-verify-kubernetes-controller-logic/ for advanced debugging capabilites. All of that needs to be put into a ai-docs directory and Split into little Feature documents and something to track progress. The aim is always to reduce context calls for AI agents that work on our project. |
Implemented in commit I added an |
|
@copilot the crds need more work and explanations what each setting does. I for example do not understand concurrency setting. The Operator should be able to slowly pull the images onto nodes without going crazy by pulling 10 images at once. |
Addressed in commit I added a dedicated CRD reference with field-by-field explanations and clarified |
|
@copilot but a PrePullImage kind will pull images onto X nodes. Concurrency does not matter here. We probably some Kind to define a policy and redesign more. Give me proposals |
Added proposals in commit I documented a redesign with a separate |
|
@copilot fix the ci/cd, test locally until everything works. |
The tool targets (controller-gen, kustomize, setup-envtest, golangci-lint, chainsaw) had their recipe lines without tab indentation, causing 'missing separator' errors when any of these targets were invoked.
|
@copilot e2e tests are still Red. You obviously did Not test it locally before commiting. |
The last executed e2e failure was the strict-decoding error on |
|
@copilot fix the e2e tests. Rethink them and verify they work using the make command. |
Fixed in I reworked the flaky E2E waits to use POSIX-safe polling under Chainsaw’s |
|
@copilot use the latest go Version. Also add renovate.json for renovate bot. I want automerge for minor Patch and digests, major are in my Hand. For dependency Updates unit a e2e tests must pass. I also want automatic releases every week so the images are always up to date and patched. |
- Update go.mod, Dockerfile, and docs workflow to Go 1.24 - Add renovate.json with automerge for minor/patch/digest, manual for major - Add weekly-release.yml that runs CI then creates a patch release every Monday
Done in Go upgrade: Updated to Go 1.24 across Renovate: Added
Weekly releases: Added
|
- Upgrade golangci-lint v1.63.4 → v2.12.2 (v2 config format) - Upgrade golangci-lint-action v6 → v9 - Upgrade chainsaw v0.2.12 → v0.2.15 (Go 1.26 ModulePath fix) - Fix staticcheck issues (switch statement, type omission) - Add GOTOOLCHAIN=local to Makefile go-install-tool - Refine README and docs Why sections
BREAKING CHANGE: API group renamed from puller.corewire.io to drop.corewire.io - Rename API group puller.corewire.io → drop.corewire.io - Rename Go module github.com/Breee/puller → github.com/Breee/drop - Rename Helm chart charts/puller → charts/drop - Rename namespace puller-system → drop-system - Rename kind cluster puller-dev → drop-dev - Rename metrics prefix puller_ → drop_ - Rename labels app.kubernetes.io/managed-by=puller → drop - Update all CRDs, RBAC, kustomize, workflows, docs - Add project-local .kubeconfig via Tiltfile (kind export)
The repository still pinned mixed Go versions across module metadata, CI, container build, and dev environment. This change standardizes everything on Go 1.26 so local/dev/CI all resolve the same toolchain.
Toolchain baseline
go 1.26.0godebugdefault togo1.26go 1.26.0Build/runtime alignment
Dockerfiletogolang:1.26Developer environment alignment
.devcontainer/devcontainer.jsonbase image todocker.io/golang:1.26CI/docs alignment
1.26in:.github/workflows/ci.yml(docs-build job).github/workflows/docs.ymlOriginal prompt