build(toolchain): bump go from 1.25 to 1.26#708
Conversation
Bumps [github.com/luthermonson/go-proxmox](https://github.com/luthermonson/go-proxmox) from 0.4.0 to 0.4.1. - [Release notes](https://github.com/luthermonson/go-proxmox/releases) - [Commits](luthermonson/go-proxmox@v0.4.0...v0.4.1) --- updated-dependencies: - dependency-name: github.com/luthermonson/go-proxmox dependency-version: 0.4.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.42.0 to 0.43.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](golang/tools@v0.42.0...v0.43.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-version: 0.43.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](docker/login-action@b45d80f...4907a6d) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
There was a problem hiding this comment.
Pull request overview
Updates CAPMOX’s build/tooling baseline to Go 1.26 so local development, CI, and the container build use the newer Go toolchain.
Changes:
- Bump the module Go version to
go 1.26.0. - Update the development prerequisites documentation to Go 1.26.
- Update the Docker builder image to
golang:1.26.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
go.mod |
Raises the Go language/toolchain baseline to 1.26.0. |
docs/Development.md |
Updates contributor-facing prerequisite Go version to 1.26. |
Dockerfile |
Builds the manager binary using the Go 1.26 image. |
| module github.com/ionos-cloud/cluster-api-provider-proxmox | ||
|
|
||
| go 1.25.0 | ||
| go 1.26.0 |
There was a problem hiding this comment.
go.mod is bumped to Go 1.26.0, but the kube-api-linter golangci config still targets Go 1.25 (.golangci-kal.yml:run.go). This can cause linting to run with the wrong language version/features; please bump that config to 1.26 to match go.mod.
| - git | ||
| - make | ||
| - Go v1.23 | ||
| - Go v1.26 | ||
| - Kubebuilder (only required for making new controllers) |
There was a problem hiding this comment.
This doc now lists Go v1.26, but there are still repository docs/instructions that mention Go 1.25.0 (e.g. .github/copilot-instructions.md:9,45,130 and custom-instructions/repo/.github/copilot-instructions.md:9,45,130). Please update those as well to keep contributor guidance consistent.
|
I added notes to #669 to make the bump tool also target the files mentioned by copilot. |
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.6.1 to 3.0.0. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](softprops/action-gh-release@153bb8e...b430933) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-version: 3.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.0.0 to 7.1.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](docker/build-push-action@d08e5c3...bcafcac) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
sonar.projectVersion triggers the 'new code' event which should fix SonarQube thinking there have not been any releases since v0.7.1 and GitHub thinking the code has not been scanned since then. https://docs.sonarsource.com/sonarqube-server/user-guide/about-new-code https://community.sonarsource.com/t/how-does-sonarqube-determine-previous-version/36871 https://community.sonarsource.com/t/github-sonarcloud-is-reporting-errors-check-the-sonarcloud-status-page-for-help/112630/11
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@bbbca2d...043fb46) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
The state machine was set to the wrong state after reconcilePowerState, therefore proxmoxmachine.Status.Addresses was never populated. Our tests for reconcileMachineAddresses succesfully ran as the code itself was fine. Our E2E tests did not fail because we do not depend on this field. To catch these kinds of errors in the future, I've made a new test for ReconcileVM which tries to test its workings in their entirety. fix: 710 fix: 714 test(vmservice): complete end-to-end ReconcileVM state machine test Exercise task lifecycle via ReconcileInFlightTask, disk resize via ResizeDisk, and fix a misleading comment. fix(vm_test.go): use RFC5739 for IP addresses feat(vm_test.go): also mock CloneVM in E2E ReconcileVM test fix(task.go): proxmox qmstart is inconsistent and leads to state failure TaskFailure State is now only set if the action is not qmstart. It looks impossible to detect a failure in qmstart. This fixes the state machine transition in ReconcileVM. test(taskservice): add task_test.go to appease quality gate Coverage for task.go dropped below the gate after the qmstart fix. These tests exercise every switch branch but are mostly tautological since the logic is straightforward and already covered by the end-to-end ReconcileVM test. fix(vm.go): typo in reconcileVirtualMachineConfig chore(vmservice/taskservice): address code review for state machine fix Co-Authored-By: Vic Kerr <wiktor.kerr@ionos.com> Co-Authored-By: Claude <noreply@anthropic.com>
|
rebased on main, merge will rebase release/v0.9.0 on main too |
| k8s.io/code-generator/cmd/conversion-gen => k8s.io/code-generator/cmd/conversion-gen v0.33.3 | ||
| k8s.io/kube-openapi/pkg/schemaconv => k8s.io/kube-openapi/pkg/schemaconv v0.0.0-20250701173324-9bd5c66d9911 // drop for k8s 34 | ||
| sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.11.7 | ||
| sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.11.8 |
There was a problem hiding this comment.
PR title/description says this is a Go toolchain bump, but this change also updates Cluster API versions (and other deps) and introduces behavior/test changes in the VM/task reconciliation state machine. Please update the PR description/title to reflect the additional scope (or split the behavioral changes into a separate PR) so reviewers can assess risk appropriately.
| if proxmoxMachineHasVMProvisionFailedReason(scope) { | ||
| scope.Logger.V(4).Info("invalid proxmoxmachine state", "state", conditions.GetReason(scope.ProxmoxMachine, infrav1.ProxmoxMachineVirtualMachineProvisionedCondition)) | ||
| // If you end up here, please file a bug report. | ||
| return vm, errors.New("invalid state (failed and no error)") |
There was a problem hiding this comment.
proxmoxMachineHasVMProvisionFailedReason now treats TaskFailed as a terminal/invalid state, but the log+error text here still tells users to “file a bug report” and returns a generic "invalid state (failed and no error)". For TaskFailed this can be a normal operational failure (e.g., clone/configure task failure) and the current message hides the actual condition/message set earlier; consider returning an error that surfaces the current condition reason/message (or differentiating TaskFailed vs VMProvisionFailed in the messaging).
| func proxmoxMachineHasVMProvisionFailedReason(scope *scope.MachineScope) bool { | ||
| reason := conditions.GetReason(scope.ProxmoxMachine, infrav1.ProxmoxMachineVirtualMachineProvisionedCondition) | ||
| return reason == infrav1.ProxmoxMachineVirtualMachineProvisionedVMProvisionFailedReason || | ||
| reason == infrav1.ProxmoxMachineVirtualMachineProvisionedTaskFailedReason | ||
| } |
There was a problem hiding this comment.
The helper name proxmoxMachineHasVMProvisionFailedReason is misleading now that it also returns true for ProxmoxMachineVirtualMachineProvisionedTaskFailedReason. Rename it (and/or update its doc/comment) so it accurately reflects the broader set of terminal failure reasons being checked.
Issue #, if available:
Deprecates #629
Description of changes:
Bump go to 1.26.0, update docs and Dockerfile.
Testing performed:
make test