From a188cf84c0e9cac220209d784baea97235f1b769 Mon Sep 17 00:00:00 2001 From: Maximilian Rink Date: Sat, 22 Aug 2026 18:33:26 +0200 Subject: [PATCH 1/3] fix: preserve Dependabot tracking module requirements --- .../src/capi/kubernetes-version-matrix.md | 5 ++++ .../latest/tools.go | 26 +++++++++++++++++++ .../release-1-31/tools.go | 26 +++++++++++++++++++ .../release-1-32/tools.go | 26 +++++++++++++++++++ .../release-1-33/tools.go | 26 +++++++++++++++++++ .../release-1-34/tools.go | 26 +++++++++++++++++++ .../release-1-35/tools.go | 26 +++++++++++++++++++ .../release-1-36/tools.go | 26 +++++++++++++++++++ 8 files changed, 187 insertions(+) create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go diff --git a/docs/book/src/capi/kubernetes-version-matrix.md b/docs/book/src/capi/kubernetes-version-matrix.md index 9a74cbce94..f917af22fb 100644 --- a/docs/book/src/capi/kubernetes-version-matrix.md +++ b/docs/book/src/capi/kubernetes-version-matrix.md @@ -46,6 +46,11 @@ patch updates only. The rolling `latest` entry can move to newer minor versions. Kubernetes releases are tracked through `k8s.io/client-go` module tags and then mapped back to Kubernetes `v1.x.y` versions in the matrix. +Each tracking module has a `tools.go` file with blank imports for the tracked +modules. Dependabot runs `go mod tidy` after updates, so these imports keep the +tracking requirements from being removed even though the manifests are not +otherwise built. + When Dependabot updates those manifests, the `Update Kubernetes version matrix` workflow regenerates the YAML files with: diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go new file mode 100644 index 0000000000..1ab25c3a8d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go @@ -0,0 +1,26 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//go:build tools + +// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +package tools + +import ( + _ "github.com/containerd/containerd/v2/client" + _ "github.com/containernetworking/plugins/pkg/ip" + _ "github.com/opencontainers/runc/libcontainer" + _ "k8s.io/client-go/kubernetes" + _ "sigs.k8s.io/cri-tools/pkg/version" +) From 525e06205cc33a38805db17e1f844d823132d10e Mon Sep 17 00:00:00 2001 From: Maximilian Rink Date: Fri, 4 Sep 2026 16:04:15 +0200 Subject: [PATCH 2/3] fix: track each matrix dependency in its own Go module The shared tracking module listed all five tracked dependencies in one go.mod. Minimal version selection then let containerd's transitive requirements raise the older release-pinned CNI and client-go versions, and several of the imported packages needed a newer go directive than the generated one. Give every tracked dependency its own synthetic module per selector, so each go.mod holds exactly one direct requirement and no dependency can move another's pin. Each module keeps a tools.go with a single blank import of the lightest package in the tracked module. That import is what survives the go mod tidy Dependabot runs after every update, and picking the lightest package keeps tidy from recording any indirect requirement. verify now parses the module manifests instead of comparing them against a rendered template, because Dependabot legitimately rewrites the go directive and may add toolchain and indirect lines. It checks the module path, the direct requirement and its version, and that go.sum carries both h1: checksums for that version, so a go.mod left ahead of its go.sum fails instead of passing quietly. It also checks that the Dependabot gomod directories cover every tracking module and nothing outside the tracking tree. render-tracking bootstraps modules for a new release selector. render-tracking --write and update --write check for the go command before they touch a file, so a missing toolchain cannot leave a half-written tree behind, and set_go_mod_require tracks the enclosing go.mod block so it only ever rewrites the direct requirement, never an // indirect line or a mention inside an exclude, replace or retract block. update --write no longer overwrites the pins Dependabot maintains. It keeps containerd_version, runc_version and kubernetes_cni_semver and only rewrites what it resolves from upstream release metadata, so it no longer derives kubernetes_cni_semver from the kubernetes-cni RPM version: the CNI plugins tarball is versioned separately from the distro package. The rolling latest entry is now refreshed from its own values instead of from the release pin for the same minor, which used to silently roll its containerd, runc and CNI tarball versions back whenever latest ran ahead of the pin. --- .github/dependabot.yml | 13 +- .../update-kubernetes-version-matrix.yaml | 4 +- .../src/capi/kubernetes-version-matrix.md | 78 ++- images/capi/hack/kubernetes-version-matrix.py | 512 +++++++++++++++--- .../latest/cni-plugins/go.mod | 5 + .../latest/cni-plugins/go.sum | 2 + .../latest/cni-plugins/tools.go | 24 + .../latest/containerd/go.mod | 5 + .../latest/containerd/go.sum | 2 + .../latest/containerd/tools.go | 24 + .../latest/cri-tools/go.mod | 5 + .../latest/cri-tools/go.sum | 2 + .../cri-tools}/tools.go | 10 +- .../latest/go.mod | 11 - .../latest/kubernetes/go.mod | 5 + .../latest/kubernetes/go.sum | 2 + .../latest/kubernetes/tools.go | 24 + .../latest/runc/go.mod | 5 + .../latest/runc/go.sum | 2 + .../latest/runc/tools.go | 24 + .../release-1-31/cni-plugins/go.mod | 5 + .../release-1-31/cni-plugins/go.sum | 2 + .../release-1-31/cni-plugins/tools.go | 24 + .../release-1-31/containerd/go.mod | 5 + .../release-1-31/containerd/go.sum | 2 + .../release-1-31/containerd/tools.go | 24 + .../release-1-31/cri-tools/go.mod | 5 + .../release-1-31/cri-tools/go.sum | 2 + .../cri-tools}/tools.go | 10 +- .../release-1-31/go.mod | 11 - .../release-1-31/kubernetes/go.mod | 5 + .../release-1-31/kubernetes/go.sum | 2 + .../release-1-31/kubernetes/tools.go | 24 + .../release-1-31/runc/go.mod | 5 + .../release-1-31/runc/go.sum | 2 + .../release-1-31/runc/tools.go | 24 + .../release-1-32/cni-plugins/go.mod | 5 + .../release-1-32/cni-plugins/go.sum | 2 + .../release-1-32/cni-plugins/tools.go | 24 + .../release-1-32/containerd/go.mod | 5 + .../release-1-32/containerd/go.sum | 2 + .../release-1-32/containerd/tools.go | 24 + .../release-1-32/cri-tools/go.mod | 5 + .../release-1-32/cri-tools/go.sum | 2 + .../cri-tools}/tools.go | 10 +- .../release-1-32/go.mod | 11 - .../release-1-32/kubernetes/go.mod | 5 + .../release-1-32/kubernetes/go.sum | 2 + .../release-1-32/kubernetes/tools.go | 24 + .../release-1-32/runc/go.mod | 5 + .../release-1-32/runc/go.sum | 2 + .../release-1-32/runc/tools.go | 24 + .../release-1-33/cni-plugins/go.mod | 5 + .../release-1-33/cni-plugins/go.sum | 2 + .../release-1-33/cni-plugins/tools.go | 24 + .../release-1-33/containerd/go.mod | 5 + .../release-1-33/containerd/go.sum | 2 + .../release-1-33/containerd/tools.go | 24 + .../release-1-33/cri-tools/go.mod | 5 + .../release-1-33/cri-tools/go.sum | 2 + .../cri-tools}/tools.go | 10 +- .../release-1-33/go.mod | 11 - .../release-1-33/kubernetes/go.mod | 5 + .../release-1-33/kubernetes/go.sum | 2 + .../release-1-33/kubernetes/tools.go | 24 + .../release-1-33/runc/go.mod | 5 + .../release-1-33/runc/go.sum | 2 + .../release-1-33/runc/tools.go | 24 + .../release-1-34/cni-plugins/go.mod | 5 + .../release-1-34/cni-plugins/go.sum | 2 + .../release-1-34/cni-plugins/tools.go | 24 + .../release-1-34/containerd/go.mod | 5 + .../release-1-34/containerd/go.sum | 2 + .../release-1-34/containerd/tools.go | 24 + .../release-1-34/cri-tools/go.mod | 5 + .../release-1-34/cri-tools/go.sum | 2 + .../release-1-34/cri-tools/tools.go | 24 + .../release-1-34/go.mod | 11 - .../release-1-34/kubernetes/go.mod | 5 + .../release-1-34/kubernetes/go.sum | 2 + .../release-1-34/kubernetes/tools.go | 24 + .../release-1-34/runc/go.mod | 5 + .../release-1-34/runc/go.sum | 2 + .../release-1-34/runc/tools.go | 24 + .../release-1-34/tools.go | 26 - .../release-1-35/cni-plugins/go.mod | 5 + .../release-1-35/cni-plugins/go.sum | 2 + .../release-1-35/cni-plugins/tools.go | 24 + .../release-1-35/containerd/go.mod | 5 + .../release-1-35/containerd/go.sum | 2 + .../release-1-35/containerd/tools.go | 24 + .../release-1-35/cri-tools/go.mod | 5 + .../release-1-35/cri-tools/go.sum | 2 + .../release-1-35/cri-tools/tools.go | 24 + .../release-1-35/go.mod | 11 - .../release-1-35/kubernetes/go.mod | 5 + .../release-1-35/kubernetes/go.sum | 2 + .../release-1-35/kubernetes/tools.go | 24 + .../release-1-35/runc/go.mod | 5 + .../release-1-35/runc/go.sum | 2 + .../release-1-35/runc/tools.go | 24 + .../release-1-35/tools.go | 26 - .../release-1-36/cni-plugins/go.mod | 5 + .../release-1-36/cni-plugins/go.sum | 2 + .../release-1-36/cni-plugins/tools.go | 24 + .../release-1-36/containerd/go.mod | 5 + .../release-1-36/containerd/go.sum | 2 + .../release-1-36/containerd/tools.go | 24 + .../release-1-36/cri-tools/go.mod | 5 + .../release-1-36/cri-tools/go.sum | 2 + .../release-1-36/cri-tools/tools.go | 24 + .../release-1-36/go.mod | 11 - .../release-1-36/kubernetes/go.mod | 5 + .../release-1-36/kubernetes/go.sum | 2 + .../release-1-36/kubernetes/tools.go | 24 + .../release-1-36/runc/go.mod | 5 + .../release-1-36/runc/go.sum | 2 + .../release-1-36/runc/tools.go | 24 + .../release-1-36/tools.go | 26 - 119 files changed, 1504 insertions(+), 287 deletions(-) create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.sum rename images/capi/packer/config/kubernetes-version-dependencies/{release-1-32 => latest/cri-tools}/tools.go (72%) delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/latest/runc/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.sum rename images/capi/packer/config/kubernetes-version-dependencies/{latest => release-1-31/cri-tools}/tools.go (72%) delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.sum rename images/capi/packer/config/kubernetes-version-dependencies/{release-1-33 => release-1-32/cri-tools}/tools.go (72%) delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.sum rename images/capi/packer/config/kubernetes-version-dependencies/{release-1-31 => release-1-33/cri-tools}/tools.go (72%) delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/tools.go create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.mod create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.sum create mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/tools.go delete mode 100644 images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1dfcd1cf7d..c2e49c2cc8 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -25,12 +25,7 @@ updates: # Kubernetes version matrix release pins - directories: - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-31" - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-32" - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-33" - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-34" - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-35" - - "/images/capi/packer/config/kubernetes-version-dependencies/release-1-36" + - "/images/capi/packer/config/kubernetes-version-dependencies/release-*/*" package-ecosystem: "gomod" open-pull-requests-limit: 5 schedule: @@ -41,6 +36,8 @@ updates: groups: kubernetes-version-matrix-release-pins: patterns: [ "*" ] + allow: + - dependency-type: "direct" ignore: - dependency-name: "github.com/containerd/containerd/v2" update-types: @@ -72,7 +69,7 @@ updates: # Kubernetes version matrix rolling latest - directories: - - "/images/capi/packer/config/kubernetes-version-dependencies/latest" + - "/images/capi/packer/config/kubernetes-version-dependencies/latest/*" package-ecosystem: "gomod" open-pull-requests-limit: 3 schedule: @@ -83,6 +80,8 @@ updates: groups: kubernetes-version-matrix-latest: patterns: [ "*" ] + allow: + - dependency-type: "direct" ignore: - dependency-name: "github.com/containerd/containerd/v2" update-types: diff --git a/.github/workflows/update-kubernetes-version-matrix.yaml b/.github/workflows/update-kubernetes-version-matrix.yaml index 24f303ccd2..ecf2edccd1 100644 --- a/.github/workflows/update-kubernetes-version-matrix.yaml +++ b/.github/workflows/update-kubernetes-version-matrix.yaml @@ -43,7 +43,7 @@ jobs: exit 1 fi - tracking_pattern='^images/capi/packer/config/kubernetes-version-dependencies/(latest|release-[0-9]+-[0-9]+)/go\.(mod|sum)$' + tracking_pattern='^images/capi/packer/config/kubernetes-version-dependencies/(latest|release-[0-9]+-[0-9]+)/(containerd|cni-plugins|runc|kubernetes|cri-tools)/go\.(mod|sum)$' invalid_files="$( printf '%s\n' "${changed_files}" | grep -Ev "${tracking_pattern}" || true @@ -78,7 +78,7 @@ jobs: fi generated_pattern='^images/capi/packer/config/kubernetes-version-(latest|matrix)\.yaml$' - tracking_pattern='^images/capi/packer/config/kubernetes-version-dependencies/(latest|release-[0-9]+-[0-9]+)/go\.(mod|sum)$' + tracking_pattern='^images/capi/packer/config/kubernetes-version-dependencies/(latest|release-[0-9]+-[0-9]+)/(containerd|cni-plugins|runc|kubernetes|cri-tools)/go\.(mod|sum)$' invalid_files="$( git diff --name-only | grep -Ev "(${generated_pattern})|(${tracking_pattern})" || true diff --git a/docs/book/src/capi/kubernetes-version-matrix.md b/docs/book/src/capi/kubernetes-version-matrix.md index f917af22fb..a518865771 100644 --- a/docs/book/src/capi/kubernetes-version-matrix.md +++ b/docs/book/src/capi/kubernetes-version-matrix.md @@ -39,20 +39,54 @@ images/capi/hack/kubernetes-version-matrix.py update --write images/capi/hack/kubernetes-version-matrix.py verify ``` -Generated Go module manifests under -`images/capi/packer/config/kubernetes-version-dependencies/` let Dependabot -track the same versions as module dependencies. Release-pinned entries accept -patch updates only. The rolling `latest` entry can move to newer minor versions. -Kubernetes releases are tracked through `k8s.io/client-go` module tags and then -mapped back to Kubernetes `v1.x.y` versions in the matrix. +Dependabot tracks the same versions as Go module dependencies. Every tracked +dependency gets its own synthetic module under +`images/capi/packer/config/kubernetes-version-dependencies/`: -Each tracking module has a `tools.go` file with blank imports for the tracked -modules. Dependabot runs `go mod tidy` after updates, so these imports keep the -tracking requirements from being removed even though the manifests are not -otherwise built. +```text +kubernetes-version-dependencies/ + latest/ # rolling entry + cni-plugins/ # github.com/containernetworking/plugins + containerd/ # github.com/containerd/containerd/v2 + cri-tools/ # sigs.k8s.io/cri-tools + kubernetes/ # k8s.io/client-go + runc/ # github.com/opencontainers/runc + release-1-31/ # one directory per release pin, same five modules + ... +``` + +Each module requires exactly one dependency, so minimal version selection +cannot let one tracked dependency raise the pin of another. Release-pinned +entries accept patch updates only. The rolling `latest` entry can move to newer +minor versions. Kubernetes releases are tracked through `k8s.io/client-go` +module tags and then mapped back to Kubernetes `v1.x.y` versions in the matrix. + +Each module also has a `tools.go` file with a single blank import. Dependabot +always runs `go mod tidy` after an update, and tidy drops requirements that no +package imports, which would empty the manifest. The imported package is the +lightest one in the tracked module so that tidy records no indirect +requirements. Because tidy also rewrites the `go` directive and may add a +`toolchain` line, `verify` checks the required module and version rather than +comparing the whole file against a template. It also checks that go.sum carries +both `h1:` checksums for the pinned version, so a go.mod left ahead of its +go.sum fails instead of passing quietly. + +`kubernetes_cni_semver` pins the CNI plugins tarball and is tracked +independently of `kubernetes_cni_deb_version` and +`kubernetes_cni_rpm_version`, which pin the distro `kubernetes-cni` package. +The two are versioned separately upstream, so `update --write` refreshes the +package versions and carries the tarball version over unchanged. + +More generally, `update --write` only rewrites what it resolves from upstream +release metadata: the Kubernetes version fields, the kubernetes-cni package +versions and crictl. `containerd_version`, `runc_version` and +`kubernetes_cni_semver` are carried over. This holds for the rolling `latest` +entry too, which is refreshed from its own values rather than from the release +pin for the same minor, so a version Dependabot moved ahead on `latest` is +never rolled back by a refresh. -When Dependabot updates those manifests, the -`Update Kubernetes version matrix` workflow regenerates the YAML files with: +When Dependabot updates the modules, the `Update Kubernetes version matrix` +workflow regenerates the YAML files with: ```sh images/capi/hack/kubernetes-version-matrix.py sync-tracking --write @@ -60,5 +94,21 @@ images/capi/hack/kubernetes-version-matrix.py verify ``` Run `update --write` when refreshing directly from upstream release and package -metadata. It updates the YAML files and regenerates the Dependabot tracking -manifests. +metadata. It updates the YAML files and then rewrites and tidies any tracking +module whose version changed. + +Bootstrap the tracking modules for a new release selector after adding its +entry to the matrix with: + +```sh +images/capi/hack/kubernetes-version-matrix.py render-tracking --write +``` + +`render-tracking --write` and `update --write` need the `go` command because +they regenerate each changed module with `go mod tidy`. Both check for it up +front and exit before touching a file, so a missing toolchain cannot leave a +go.mod ahead of its go.sum. `verify` and `sync-tracking` do not need `go`. +`verify` needs no network access beyond a `yq` binary, which `hack/ensure-yq.sh` +downloads when one is not already installed. `sync-tracking` only reaches the +network when the tracked Kubernetes version moved and the Debian package +revision has to be resolved again. diff --git a/images/capi/hack/kubernetes-version-matrix.py b/images/capi/hack/kubernetes-version-matrix.py index 4a1325b7e6..cb30922905 100755 --- a/images/capi/hack/kubernetes-version-matrix.py +++ b/images/capi/hack/kubernetes-version-matrix.py @@ -20,6 +20,7 @@ import argparse import difflib +import fnmatch import gzip import importlib.util import json @@ -31,7 +32,7 @@ import urllib.request import xml.etree.ElementTree as ET from pathlib import Path -from typing import Any +from typing import Any, NamedTuple sys.dont_write_bytecode = True @@ -45,6 +46,7 @@ "sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies" ) TRACKING_GO_VERSION = "1.24" +DEPENDABOT_FILE = REPO_ROOT / ".github/dependabot.yml" KUBERNETES_DEB_RESOLVER = ( REPO_ROOT / ".github/actions/configure-k8s-version/resolve-kubernetes-deb-version.py" ) @@ -71,13 +73,70 @@ "kubernetes_series", "runc_version", ) +LICENSE_HEADER = """// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +""" + + +class TrackedModule(NamedTuple): + """One synthetic Go module that tracks a single matrix dependency. + + ``package`` is the lightest importable package in ``module``. It only has + to pull the module into the requirement graph, so the fewer transitive + imports it has, the fewer indirect requirements ``go mod tidy`` records. + """ + + name: str + module: str + entry_key: str + package: str + + TRACKED_GO_MODULES = ( - ("github.com/containerd/containerd/v2", "containerd_version"), - ("github.com/containernetworking/plugins", "kubernetes_cni_semver"), - ("github.com/opencontainers/runc", "runc_version"), - ("k8s.io/client-go", "kubernetes_semver"), - ("sigs.k8s.io/cri-tools", "crictl_version"), + TrackedModule( + "containerd", + "github.com/containerd/containerd/v2", + "containerd_version", + "github.com/containerd/containerd/v2/version", + ), + TrackedModule( + "cni-plugins", + "github.com/containernetworking/plugins", + "kubernetes_cni_semver", + "github.com/containernetworking/plugins/pkg/utils/buildversion", + ), + TrackedModule( + "runc", + "github.com/opencontainers/runc", + "runc_version", + "github.com/opencontainers/runc/types/features", + ), + TrackedModule( + "kubernetes", + "k8s.io/client-go", + "kubernetes_semver", + "k8s.io/client-go/util/homedir", + ), + TrackedModule( + "cri-tools", + "sigs.k8s.io/cri-tools", + "crictl_version", + "sigs.k8s.io/cri-tools/pkg/version", + ), ) +TOOLS_IMPORT_RE = re.compile(r'^\s*_\s+"([^"]+)"', re.MULTILINE) +GO_MOD_BLOCK_RE = re.compile(r"(require|exclude|replace|retract)\s*\(") def ensure_yq() -> str: @@ -237,6 +296,15 @@ def resolve_crictl_version(minor: str) -> str: def refresh_entry(selector: str, current: dict[str, Any]) -> dict[str, Any]: + """Refresh the pins one selector resolves from upstream release metadata. + + Only the Kubernetes version fields, the kubernetes-cni package versions and + crictl are refreshed here. ``containerd_version``, ``runc_version`` and + ``kubernetes_cni_semver`` are deliberately carried over from ``current``: + Dependabot tracks each of them in its own tracking module, and the CNI + plugins tarball in particular does not have to match the kubernetes-cni + package version. + """ kubernetes_semver = stable_kubernetes_version(selector) kubernetes_version = kubernetes_semver.removeprefix("v") cni_rpm_version = resolve_cni_rpm_version(selector) @@ -246,7 +314,6 @@ def refresh_entry(selector: str, current: dict[str, Any]) -> dict[str, Any]: "crictl_version": resolve_crictl_version(selector), "kubernetes_cni_deb_version": resolve_cni_deb_version(selector), "kubernetes_cni_rpm_version": cni_rpm_version, - "kubernetes_cni_semver": f"v{cni_rpm_version}", "kubernetes_deb_version": resolve_kubernetes_deb_version(kubernetes_version), "kubernetes_rpm_version": kubernetes_version, "kubernetes_semver": kubernetes_semver, @@ -265,8 +332,11 @@ def refresh_matrix() -> tuple[dict[str, dict[str, Any]], dict[str, Any]]: latest_semver = stable_kubernetes_version() latest_selector = ".".join(latest_semver.removeprefix("v").split(".")[:2]) - latest_base = refreshed_pins.get(latest_selector, latest) - refreshed_latest = refresh_entry(latest_selector, latest_base) + # Refresh the rolling entry from its own values, never from the release pin + # for the same minor. containerd, runc and the CNI plugins tarball are + # tracked separately for latest and may legitimately run ahead of the pin, + # so seeding from the pin would silently roll them back. + refreshed_latest = refresh_entry(latest_selector, latest) return refreshed_pins, refreshed_latest @@ -336,8 +406,12 @@ def tracking_selector_name(selector: str) -> str: return f"release-{selector.replace('.', '-')}" -def tracking_go_mod_path(selector: str) -> Path: - return TRACKING_DIR / tracking_selector_name(selector) / "go.mod" +def tracking_module_dir(selector: str, tracked: TrackedModule) -> Path: + return TRACKING_DIR / tracking_selector_name(selector) / tracked.name + + +def tracking_module_path(selector: str, tracked: TrackedModule) -> str: + return f"{TRACKING_MODULE_PREFIX}/{tracking_selector_name(selector)}/{tracked.name}" def kubernetes_module_version(kubernetes_semver: Any) -> str: @@ -365,81 +439,330 @@ def go_module_version(module: str, value: Any) -> str: return f"v{version}" -def render_tracking_go_mod(selector: str, entry: dict[str, Any]) -> str: - module_name = f"{TRACKING_MODULE_PREFIX}/{tracking_selector_name(selector)}" - lines = [ - f"module {module_name}", - "", - f"go {TRACKING_GO_VERSION}", - "", - "require (", - ] - for module, entry_key in TRACKED_GO_MODULES: - lines.append(f"\t{module} {go_module_version(module, entry[entry_key])}") - lines.append(")") - return "\n".join(lines) + "\n" +def render_tracking_go_mod(module_path: str, tracked: TrackedModule, version: str) -> str: + return ( + f"module {module_path}\n" + "\n" + f"go {TRACKING_GO_VERSION}\n" + "\n" + f"require {tracked.module} {version}\n" + ) + + +def render_tracking_tools_go(tracked: TrackedModule) -> str: + return LICENSE_HEADER + ( + "\n" + "//go:build tools\n" + "\n" + "// Package tools keeps the tracked module in go.mod. Dependabot always\n" + "// runs go mod tidy after an update, and tidy drops requirements that no\n" + "// package imports.\n" + "package tools\n" + "\n" + "import (\n" + f'\t_ "{tracked.package}"\n' + ")\n" + ) -def render_tracking_go_mods( +def tracking_entries( release_pins: dict[str, dict[str, Any]], latest: dict[str, Any] -) -> dict[Path, str]: - manifests = { - tracking_go_mod_path(selector): render_tracking_go_mod(selector, release_pins[selector]) +) -> list[tuple[str, dict[str, Any]]]: + entries = [ + (selector, release_pins[selector]) for selector in sorted(release_pins, key=version_sort_key) - } - manifests[tracking_go_mod_path("latest")] = render_tracking_go_mod("latest", latest) - return manifests + ] + entries.append(("latest", latest)) + return entries -def read_tracking_go_mod(selector: str) -> dict[str, str]: - path = tracking_go_mod_path(selector) - if not path.exists(): - raise FileNotFoundError(f"{path} does not exist") +def expected_tracking_modules( + release_pins: dict[str, dict[str, Any]], latest: dict[str, Any] +) -> dict[Path, tuple[str, TrackedModule, str]]: + """Map every expected module directory to its module path, dependency and version.""" + modules: dict[Path, tuple[str, TrackedModule, str]] = {} + for selector, entry in tracking_entries(release_pins, latest): + for tracked in TRACKED_GO_MODULES: + modules[tracking_module_dir(selector, tracked)] = ( + tracking_module_path(selector, tracked), + tracked, + go_module_version(tracked.module, entry[tracked.entry_key]), + ) + return modules - versions: dict[str, str] = {} + +def parse_go_mod(path: Path) -> tuple[str, dict[str, str]]: + """Return the module path and the direct requirements of a go.mod file.""" + module_path = "" + requires: dict[str, str] = {} in_require_block = False - for line in path.read_text().splitlines(): - stripped = line.strip() - if not stripped or stripped.startswith("//"): + for raw_line in path.read_text().splitlines(): + code, _, comment = raw_line.partition("//") + line = code.strip() + if not line: + continue + if line.startswith("module "): + module_path = line.removeprefix("module ").strip() continue - if stripped == "require (": + if in_require_block: + if line == ")": + in_require_block = False + continue + elif line == "require (": in_require_block = True continue - if in_require_block and stripped == ")": - in_require_block = False + elif line.startswith("require "): + line = line.removeprefix("require ").strip() + if line == "(": + in_require_block = True + continue + else: continue - if stripped.startswith("require "): - stripped = stripped.removeprefix("require ").strip() - if not in_require_block and " " not in stripped: + if "indirect" in comment: continue - parts = stripped.split() + parts = line.split() if len(parts) >= 2: - versions[parts[0]] = parts[1] - return versions + requires[parts[0]] = parts[1] + return module_path, requires -def entry_from_tracking(selector: str, current: dict[str, Any]) -> dict[str, Any]: - versions = read_tracking_go_mod(selector) - missing_modules = [ - module for module, _ in TRACKED_GO_MODULES if module not in versions +def go_sum_modules(path: Path) -> set[tuple[str, str]]: + """Return the (module, version) pairs a go.sum records an h1: checksum for. + + ``version`` keeps the ``/go.mod`` suffix of the manifest-only lines, so a + caller can tell the two kinds of checksum apart. + """ + recorded = set() + for line in path.read_text().splitlines(): + parts = line.split() + if len(parts) == 3 and parts[2].startswith("h1:"): + recorded.add((parts[0], parts[1])) + return recorded + + +def tracking_tools_packages(path: Path) -> list[str]: + return TOOLS_IMPORT_RE.findall(path.read_text()) + + +def set_go_mod_require(path: Path, module: str, version: str) -> bool: + """Rewrite the direct requirement on ``module`` in place. + + Every other line is left alone, including requirements marked + ``// indirect`` and any mention of the module inside an exclude, replace or + retract block. + """ + pattern = re.compile(rf"^(\s*(?:require\s+)?){re.escape(module)}\s+\S+(.*)$") + lines = path.read_text().splitlines(keepends=True) + block = "" + changed = False + for index, raw_line in enumerate(lines): + line = raw_line.rstrip("\n") + code, _, comment = line.partition("//") + stripped = code.strip() + + if block: + if stripped == ")": + block = "" + in_require = block == "require" + elif opened := GO_MOD_BLOCK_RE.fullmatch(stripped): + block = opened.group(1) + continue + else: + in_require = stripped.startswith("require ") + + if not in_require or "indirect" in comment: + continue + match = pattern.match(line) + if not match: + continue + replacement = f"{match.group(1)}{module} {version}{match.group(2)}" + if replacement != line: + lines[index] = replacement + "\n" + changed = True + if changed: + path.write_text("".join(lines)) + return changed + + +def missing_go_error() -> str | None: + """Return an error message when the go command is unavailable, else None.""" + if shutil.which("go"): + return None + return ( + "the go command is required to write tracking modules because each one is " + "regenerated with 'go mod tidy'; install Go and rerun" + ) + + +def go_mod_tidy(directory: Path) -> None: + go = shutil.which("go") + if not go: + raise RuntimeError(f"{missing_go_error()} (needed for {directory})") + subprocess.run([go, "mod", "tidy"], check=True, cwd=directory) + + +def tracking_module_issues( + directory: Path, module_path: str, tracked: TrackedModule, version: str +) -> list[str]: + """Report why a tracking module does not match the matrix; empty when it does.""" + go_mod = directory / "go.mod" + if not go_mod.exists(): + return [f"{go_mod}: missing Dependabot tracking module"] + + issues = [] + current_module, requires = parse_go_mod(go_mod) + if current_module != module_path: + issues.append(f"{go_mod}: module is {current_module!r}, expected {module_path!r}") + if tracked.module not in requires: + issues.append(f"{go_mod}: {tracked.module} is not a direct requirement") + elif requires[tracked.module] != version: + issues.append( + f"{go_mod}: {tracked.module} is {requires[tracked.module]}, expected {version}" + ) + go_sum = directory / "go.sum" + if not go_sum.exists(): + issues.append(f"{go_sum}: missing checksum file") + else: + recorded = go_sum_modules(go_sum) + issues.extend( + f"{go_sum}: no h1: checksum for {tracked.module} {version}{suffix}" + for suffix in ("", "/go.mod") + if (tracked.module, f"{version}{suffix}") not in recorded + ) + + tools_go = directory / "tools.go" + if not tools_go.exists(): + issues.append(f"{tools_go}: missing tools file") + elif not any( + package == tracked.module or package.startswith(f"{tracked.module}/") + for package in tracking_tools_packages(tools_go) + ): + issues.append(f"{tools_go}: no blank import of a {tracked.module} package") + return issues + + +def unexpected_tracking_files(expected_dirs: set[Path]) -> list[str]: + if not TRACKING_DIR.exists(): + return [] + return [ + f"{path}: unexpected Dependabot tracking file" + for path in sorted(TRACKING_DIR.rglob("*")) + if path.is_file() and path.parent not in expected_dirs ] - if missing_modules: + + +def dependabot_gomod_directories() -> list[str]: + config = yq_json(DEPENDABOT_FILE, ".") + patterns = [] + for update in config.get("updates") or []: + if update.get("package-ecosystem") != "gomod": + continue + if directory := update.get("directory"): + patterns.append(directory) + patterns.extend(update.get("directories") or []) + return patterns + + +def dependabot_coverage_issues(expected_dirs: set[Path]) -> list[str]: + """Check that the gomod entries cover every tracking module and nothing else.""" + tracking_prefix = f"/{TRACKING_DIR.relative_to(REPO_ROOT).as_posix()}/" + wanted = sorted(f"/{path.relative_to(REPO_ROOT).as_posix()}" for path in expected_dirs) + patterns = dependabot_gomod_directories() + + issues = [] + for directory in wanted: + if not any(fnmatch.fnmatch(directory, pattern) for pattern in patterns): + issues.append(f"{DEPENDABOT_FILE}: no gomod entry covers {directory}") + for pattern in patterns: + if not pattern.startswith(tracking_prefix): + issues.append( + f"{DEPENDABOT_FILE}: gomod entry {pattern!r} points outside {tracking_prefix}" + ) + elif not any(fnmatch.fnmatch(directory, pattern) for directory in wanted): + issues.append( + f"{DEPENDABOT_FILE}: gomod entry {pattern!r} matches no tracking module" + ) + return issues + + +def write_tracking_module( + directory: Path, module_path: str, tracked: TrackedModule, version: str +) -> None: + directory.mkdir(parents=True, exist_ok=True) + go_mod = directory / "go.mod" + current_module, requires = parse_go_mod(go_mod) if go_mod.exists() else ("", {}) + if current_module == module_path and tracked.module in requires: + set_go_mod_require(go_mod, tracked.module, version) + else: + go_mod.write_text(render_tracking_go_mod(module_path, tracked, version)) + (directory / "tools.go").write_text(render_tracking_tools_go(tracked)) + go_mod_tidy(directory) + + +def sync_tracking_modules( + release_pins: dict[str, dict[str, Any]], latest: dict[str, Any], write: bool +) -> bool: + """Bring the tracking modules in line with the matrix. True when they changed.""" + expected = expected_tracking_modules(release_pins, latest) + changed = False + for directory, (module_path, tracked, version) in sorted(expected.items()): + issues = tracking_module_issues(directory, module_path, tracked, version) + if not issues: + continue + changed = True + if write: + write_tracking_module(directory, module_path, tracked, version) + continue + for issue in issues: + print(issue, file=sys.stderr) + + for stale in unexpected_tracking_files(set(expected)): + changed = True + print(stale, file=sys.stderr) + return changed + + +def read_tracking_versions(selector: str) -> dict[str, str]: + versions: dict[str, str] = {} + missing = [] + for tracked in TRACKED_GO_MODULES: + go_mod = tracking_module_dir(selector, tracked) / "go.mod" + if not go_mod.exists(): + missing.append(str(go_mod)) + continue + _, requires = parse_go_mod(go_mod) + if tracked.module not in requires: + missing.append(f"{go_mod} ({tracked.module})") + continue + versions[tracked.module] = requires[tracked.module] + if missing: raise ValueError( - f"{selector}: tracking manifest missing modules: {', '.join(missing_modules)}" + f"{selector}: tracking modules missing requirements: {', '.join(missing)}" ) + return versions + + +def entry_from_tracking(selector: str, current: dict[str, Any]) -> dict[str, Any]: + """Fold the versions Dependabot maintains back into one matrix entry. + The kubernetes-cni package versions are not touched. They pin the distro + package, which is versioned separately from the CNI plugins tarball that + ``kubernetes_cni_semver`` selects. + """ + versions = read_tracking_versions(selector) kubernetes_semver = kubernetes_semver_from_module(versions["k8s.io/client-go"]) kubernetes_version = kubernetes_semver.removeprefix("v") kubernetes_minor = ".".join(kubernetes_version.split(".")[:2]) if selector != "latest" and kubernetes_minor != selector: raise ValueError( - f"{selector}: tracking manifest points to Kubernetes {kubernetes_minor}, " + f"{selector}: tracking module points to Kubernetes {kubernetes_minor}, " f"expected {selector}" ) - cni_semver = versions["github.com/containernetworking/plugins"] - cni_version = cni_semver.removeprefix("v") - cni_rpm_version = resolve_cni_rpm_version(kubernetes_minor, cni_version) + deb_version = current.get("kubernetes_deb_version") + if current.get("kubernetes_rpm_version") != kubernetes_version or not deb_version: + deb_version = resolve_kubernetes_deb_version(kubernetes_version) + updated = dict(current) updated.update( { @@ -447,12 +770,8 @@ def entry_from_tracking(selector: str, current: dict[str, Any]) -> dict[str, Any "github.com/containerd/containerd/v2" ].removeprefix("v"), "crictl_version": versions["sigs.k8s.io/cri-tools"].removeprefix("v"), - "kubernetes_cni_deb_version": resolve_cni_deb_version( - kubernetes_minor, cni_version - ), - "kubernetes_cni_rpm_version": cni_rpm_version, - "kubernetes_cni_semver": f"v{cni_rpm_version}", - "kubernetes_deb_version": resolve_kubernetes_deb_version(kubernetes_version), + "kubernetes_cni_semver": versions["github.com/containernetworking/plugins"], + "kubernetes_deb_version": deb_version, "kubernetes_rpm_version": kubernetes_version, "kubernetes_semver": kubernetes_semver, "kubernetes_series": f"v{kubernetes_minor}", @@ -468,7 +787,6 @@ def expected_files( return { MATRIX_FILE: render_release_matrix_yaml(release_pins), LATEST_FILE: render_latest_yaml(latest), - **render_tracking_go_mods(release_pins, latest), } @@ -516,9 +834,13 @@ def validate_entry(selector: str, entry: dict[str, Any]) -> list[str]: errors.append(f"{selector}: kubernetes_rpm_version does not match kubernetes_semver") if not str(entry["kubernetes_deb_version"]).startswith(f"{kubernetes_version}-"): errors.append(f"{selector}: kubernetes_deb_version does not match kubernetes_semver") + # kubernetes_cni_semver pins the CNI plugins tarball and is tracked on its + # own, so it is only checked for shape, not against the package versions. + if not re.fullmatch(r"v\d+\.\d+\.\d+", str(entry["kubernetes_cni_semver"])): + errors.append( + f"{selector}: invalid kubernetes_cni_semver {entry['kubernetes_cni_semver']!r}" + ) cni_rpm = entry["kubernetes_cni_rpm_version"] - if entry["kubernetes_cni_semver"] != f"v{cni_rpm}": - errors.append(f"{selector}: kubernetes_cni_semver does not match RPM CNI version") if not str(entry["kubernetes_cni_deb_version"]).startswith(f"{cni_rpm}-"): errors.append(f"{selector}: DEB and RPM CNI versions do not match") return errors @@ -531,19 +853,11 @@ def verify() -> int: errors.extend(validate_entry(selector, entry)) errors.extend(validate_entry("latest", latest)) - expected_tracking = render_tracking_go_mods(release_pins, latest) - for path, expected in expected_tracking.items(): - if not path.exists(): - errors.append(f"{path}: missing generated Dependabot tracking manifest") - continue - current = path.read_text() - if current != expected: - errors.append(f"{path}: generated Dependabot tracking manifest is out of date") - - expected_paths = set(expected_tracking) - for path in TRACKING_DIR.glob("*/go.mod"): - if path not in expected_paths: - errors.append(f"{path}: unexpected Dependabot tracking manifest") + expected = expected_tracking_modules(release_pins, latest) + for directory, (module_path, tracked, version) in sorted(expected.items()): + errors.extend(tracking_module_issues(directory, module_path, tracked, version)) + errors.extend(unexpected_tracking_files(set(expected))) + errors.extend(dependabot_coverage_issues(set(expected))) if errors: for error in errors: @@ -554,8 +868,13 @@ def verify() -> int: def update(write: bool) -> int: + if write and (error := missing_go_error()): + print(f"ERROR: {error}", file=sys.stderr) + return 1 + release_pins, latest = refresh_matrix() changed = apply_expected_files(expected_files(release_pins, latest), write) + changed = sync_tracking_modules(release_pins, latest, write) or changed if changed and not write: print("Kubernetes version matrix is out of date; rerun with --write", file=sys.stderr) @@ -563,6 +882,21 @@ def update(write: bool) -> int: return verify() +def render_tracking(write: bool) -> int: + if write and (error := missing_go_error()): + print(f"ERROR: {error}", file=sys.stderr) + return 1 + + release_pins, latest = load_matrix() + if sync_tracking_modules(release_pins, latest, write) and not write: + print( + "Dependabot tracking modules do not match the matrix; rerun with --write", + file=sys.stderr, + ) + return 1 + return verify() + + def sync_tracking(write: bool) -> int: release_pins, latest = load_matrix() synced_pins = { @@ -574,8 +908,7 @@ def sync_tracking(write: bool) -> int: if changed and not write: print( - "Kubernetes version matrix does not match tracking manifests; " - "rerun with --write", + "Kubernetes version matrix does not match tracking modules; rerun with --write", file=sys.stderr, ) return 1 @@ -589,13 +922,20 @@ def main() -> int: render_parser = subparsers.add_parser("render", help="render one matrix entry as JSON") render_parser.add_argument("selector", nargs="?", default="latest") - subparsers.add_parser("verify", help="verify matrix structure and tracking manifests") + subparsers.add_parser("verify", help="verify matrix structure and tracking modules") update_parser = subparsers.add_parser("update", help="refresh Kubernetes package pins") - update_parser.add_argument("--write", action="store_true", help="write refreshed YAML files") + update_parser.add_argument("--write", action="store_true", help="write refreshed files") + + render_tracking_parser = subparsers.add_parser( + "render-tracking", help="create or repair Dependabot tracking modules from the matrix" + ) + render_tracking_parser.add_argument( + "--write", action="store_true", help="write the tracking modules" + ) sync_parser = subparsers.add_parser( - "sync-tracking", help="refresh matrix YAML from Dependabot tracking manifests" + "sync-tracking", help="refresh matrix YAML from Dependabot tracking modules" ) sync_parser.add_argument("--write", action="store_true", help="write refreshed YAML files") @@ -607,6 +947,8 @@ def main() -> int: return verify() if args.command == "update": return update(args.write) + if args.command == "render-tracking": + return render_tracking(args.write) if args.command == "sync-tracking": return sync_tracking(args.write) return 1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.mod new file mode 100644 index 0000000000..448659a81f --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins + +go 1.24.2 + +require github.com/containernetworking/plugins v1.9.1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.sum new file mode 100644 index 0000000000..7aa17cb1c2 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.9.1 h1:8oU6WsIsU3bpnNZuvHp74a6cE1MJwbj2P7s4/yTUNlA= +github.com/containernetworking/plugins v1.9.1/go.mod h1:fj7kS55qg3o/RgS+WGsF3+ZxwIImMPusQZKzBpcSr4c= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.mod new file mode 100644 index 0000000000..bddf98f115 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.mod new file mode 100644 index 0000000000..1d16de6ba7 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools + +go 1.26.2 + +require sigs.k8s.io/cri-tools v1.36.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.sum new file mode 100644 index 0000000000..49c0d9db31 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.36.0 h1:Xt+LLvBVH1Fnp/AR2EyHApyWS/88y2KlWjlDc2HR+aw= +sigs.k8s.io/cri-tools v1.36.0/go.mod h1:6G/U59mqfhCocDGq5nET3A77GIf7h7ZZc93VM+uPS0U= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/tools.go similarity index 72% rename from images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go rename to images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/tools.go index 1ab25c3a8d..a51fd3403e 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/tools.go +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/cri-tools/tools.go @@ -11,16 +11,14 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// + //go:build tools -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. package tools import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" _ "sigs.k8s.io/cri-tools/pkg/version" ) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/go.mod deleted file mode 100644 index 512c2d8737..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/latest/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.9.1 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.36.3 - sigs.k8s.io/cri-tools v1.36.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.mod new file mode 100644 index 0000000000..f906fdc7b0 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes + +go 1.26.0 + +require k8s.io/client-go v0.36.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.sum new file mode 100644 index 0000000000..b813eb46f1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.36.3 h1:M4JdVzXxYcZk4fGpfDdYnxSwhLKWCFoQsHW6t+z8Hfg= +k8s.io/client-go v0.36.3/go.mod h1:gcPwr0c87vjjG6HB6pWEqOeuYVoXSsREjzux2j6GF30= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.mod new file mode 100644 index 0000000000..51cdae5a03 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/latest/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/latest/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.mod new file mode 100644 index 0000000000..e52e087113 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins + +go 1.24 + +require github.com/containernetworking/plugins v1.5.1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.sum new file mode 100644 index 0000000000..ccecf3fddb --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.5.1 h1:T5ji+LPYjjgW0QM+KyrigZbLsZ8jaX+E5J/EcKOE4gQ= +github.com/containernetworking/plugins v1.5.1/go.mod h1:MIQfgMayGuHYs0XdNudf31cLLAC+i242hNm6KuDGqCM= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.mod new file mode 100644 index 0000000000..9bdd9c605d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.mod new file mode 100644 index 0000000000..8a5e1ce0d3 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools + +go 1.24 + +require sigs.k8s.io/cri-tools v1.31.1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.sum new file mode 100644 index 0000000000..556e4cd78f --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.31.1 h1:9NLZ20IAc26+vsyY593LQyxmbiaPu9tmkznkJbVxDpE= +sigs.k8s.io/cri-tools v1.31.1/go.mod h1:PvPf/fN5FiNdK1v43jCydRNRw6631qGTSEOhv/OsjYU= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/tools.go similarity index 72% rename from images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go rename to images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/tools.go index 1ab25c3a8d..a51fd3403e 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/latest/tools.go +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/cri-tools/tools.go @@ -11,16 +11,14 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// + //go:build tools -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. package tools import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" _ "sigs.k8s.io/cri-tools/pkg/version" ) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/go.mod deleted file mode 100644 index 3fe95438c3..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.5.1 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.31.14 - sigs.k8s.io/cri-tools v1.31.1 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.mod new file mode 100644 index 0000000000..8c701a7260 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes + +go 1.24 + +require k8s.io/client-go v0.31.14 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.sum new file mode 100644 index 0000000000..70816052f4 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.31.14 h1:d4/G0xfksNIbMWH7ghjzOwC5bTAwQ20gABTjZw7fLlQ= +k8s.io/client-go v0.31.14/go.mod h1:0uRpRB7r5QwtsbxEngZPkbcIVoNdAQAPIcopgiXjhQc= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.mod new file mode 100644 index 0000000000..cd32e97258 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod new file mode 100644 index 0000000000..b2241c49f4 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins + +go 1.24 + +require github.com/containernetworking/plugins v1.6.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum new file mode 100644 index 0000000000..3dc3c681ab --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.6.0 h1:lrsUrLF7QODLx6gncHOqk/pnCiC7c6bvDAskV4KUifQ= +github.com/containernetworking/plugins v1.6.0/go.mod h1:rYLQWMJz/dYuW1XhHdc9xuzdkgbkWEEjwOhUm84+288= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.mod new file mode 100644 index 0000000000..7b0775aaed --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.mod new file mode 100644 index 0000000000..1b085ab5e9 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools + +go 1.24 + +require sigs.k8s.io/cri-tools v1.32.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.sum new file mode 100644 index 0000000000..a7f2ee54f5 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.32.0 h1:7MjIenjjug+NFCD8f73aeLyyDvwDCYj1nJ+rGOlqKxw= +sigs.k8s.io/cri-tools v1.32.0/go.mod h1:Rn0zexq+0EvDr3+1R3L7lj/sjqGqSY5c3tQhOswoHfE= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/tools.go similarity index 72% rename from images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go rename to images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/tools.go index 1ab25c3a8d..a51fd3403e 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/tools.go +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cri-tools/tools.go @@ -11,16 +11,14 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// + //go:build tools -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. package tools import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" _ "sigs.k8s.io/cri-tools/pkg/version" ) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/go.mod deleted file mode 100644 index 6833e5b683..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.6.0 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.32.13 - sigs.k8s.io/cri-tools v1.32.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.mod new file mode 100644 index 0000000000..99da89722b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes + +go 1.24 + +require k8s.io/client-go v0.32.13 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.sum new file mode 100644 index 0000000000..55be13eea5 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.32.13 h1:FxVdGzgrWW8QBprX/xJjoxs9tE06UJIbuy8IfNoxn0c= +k8s.io/client-go v0.32.13/go.mod h1:XhErcCmtSRUns7g0fXYjV8NAXvJWHQCT9EaYkf4dbyw= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.mod new file mode 100644 index 0000000000..a0e03df6db --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.mod new file mode 100644 index 0000000000..2df4638514 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins + +go 1.24 + +require github.com/containernetworking/plugins v1.6.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.sum new file mode 100644 index 0000000000..3dc3c681ab --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.6.0 h1:lrsUrLF7QODLx6gncHOqk/pnCiC7c6bvDAskV4KUifQ= +github.com/containernetworking/plugins v1.6.0/go.mod h1:rYLQWMJz/dYuW1XhHdc9xuzdkgbkWEEjwOhUm84+288= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.mod new file mode 100644 index 0000000000..b6e4f62f64 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.mod new file mode 100644 index 0000000000..3644fa8da0 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools + +go 1.24.1 + +require sigs.k8s.io/cri-tools v1.33.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.sum new file mode 100644 index 0000000000..30a02cbd36 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.33.0 h1:eNNbXuM4myjQ2LACmUqEHysfPBi500hhcoD7yVYTtMo= +sigs.k8s.io/cri-tools v1.33.0/go.mod h1:JPw6cL1gGUJFc15KE1+4qSnQDK5yHWNnMhHLzTzdhbk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/tools.go similarity index 72% rename from images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go rename to images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/tools.go index 1ab25c3a8d..a51fd3403e 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-31/tools.go +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/cri-tools/tools.go @@ -11,16 +11,14 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// + //go:build tools -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. package tools import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" _ "sigs.k8s.io/cri-tools/pkg/version" ) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/go.mod deleted file mode 100644 index 078056d197..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.6.0 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.33.13 - sigs.k8s.io/cri-tools v1.33.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.mod new file mode 100644 index 0000000000..65cf2b9fa1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes + +go 1.24.0 + +require k8s.io/client-go v0.33.13 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.sum new file mode 100644 index 0000000000..3aa2be74e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.33.13 h1:gyirIFpLEF9RltmrUkkObQFkxeumU2hRcxiDsVfrf1w= +k8s.io/client-go v0.33.13/go.mod h1:JcZUgHTHDjbLaFaGVNuGmef4iqKNqOzdtwDu3RlR058= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.mod new file mode 100644 index 0000000000..02650b7120 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-33/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.mod new file mode 100644 index 0000000000..7bddcba2f3 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins + +go 1.24 + +require github.com/containernetworking/plugins v1.7.1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.sum new file mode 100644 index 0000000000..75fde4e66a --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.7.1 h1:CNAR0jviDj6FS5Vg85NTgKWLDzZPfi/lj+VJfhMDTIs= +github.com/containernetworking/plugins v1.7.1/go.mod h1:xuMdjuio+a1oVQsHKjr/mgzuZ24leAsqUYRnzGoXHy0= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.mod new file mode 100644 index 0000000000..fd74061671 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.mod new file mode 100644 index 0000000000..20dffee599 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools + +go 1.24.1 + +require sigs.k8s.io/cri-tools v1.34.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.sum new file mode 100644 index 0000000000..72627fc6b6 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.34.0 h1:KqL9EJ+WgHtz1HR1exezm91n+o8O2uMLs/eHzHJHAWw= +sigs.k8s.io/cri-tools v1.34.0/go.mod h1:JyYVG0YFsly+p/hfDfmQcQBNFVHh0+BpMTn49YpasMA= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/tools.go new file mode 100644 index 0000000000..a51fd3403e --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/cri-tools/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/go.mod deleted file mode 100644 index 39eb1740f7..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.7.1 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.34.10 - sigs.k8s.io/cri-tools v1.34.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.mod new file mode 100644 index 0000000000..1e4a124a06 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes + +go 1.24.0 + +require k8s.io/client-go v0.34.10 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.sum new file mode 100644 index 0000000000..793f7cd540 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.34.10 h1:JP3CRMsHRn4cX8XSWZujrCtqEXHe196LiKVNk4JcUyY= +k8s.io/client-go v0.34.10/go.mod h1:YAg8H6f2c9VUTyclFx2S5IGfHbvOrTXpSierUCjrYNE= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.mod new file mode 100644 index 0000000000..f66259a04d --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go deleted file mode 100644 index 1ab25c3a8d..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-34/tools.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2026 The Kubernetes Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//go:build tools - -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. -package tools - -import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" - _ "sigs.k8s.io/cri-tools/pkg/version" -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.mod new file mode 100644 index 0000000000..9698e73628 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins + +go 1.24.2 + +require github.com/containernetworking/plugins v1.8.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.sum new file mode 100644 index 0000000000..e413483865 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.8.0 h1:WjGbV/0UQyo8A4qBsAh6GaDAtu1hevxVxsEuqtBqUFk= +github.com/containernetworking/plugins v1.8.0/go.mod h1:JG3BxoJifxxHBhG3hFyxyhid7JgRVBu/wtooGEvWf1c= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.mod new file mode 100644 index 0000000000..6578302d8c --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.mod new file mode 100644 index 0000000000..b9d5e5e281 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools + +go 1.25.0 + +require sigs.k8s.io/cri-tools v1.35.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.sum new file mode 100644 index 0000000000..01b8abedc8 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.35.0 h1:VqnCISAbjvHPoT0hPVp9Y67LWssL2bhYlg5ZKFoX5oQ= +sigs.k8s.io/cri-tools v1.35.0/go.mod h1:03ImEaXuxJI9gW/1qD+6mcUGfcTYd2byDAuSdjjFfis= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/tools.go new file mode 100644 index 0000000000..a51fd3403e --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/cri-tools/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/go.mod deleted file mode 100644 index 6091dd9427..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.8.0 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.35.7 - sigs.k8s.io/cri-tools v1.35.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.mod new file mode 100644 index 0000000000..8ca6eeaecd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes + +go 1.25.0 + +require k8s.io/client-go v0.35.7 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.sum new file mode 100644 index 0000000000..b86dbe7c39 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.35.7 h1:UWxdVZcqqCdeip50BKoIcoGryX7WfTE1oQQVolP8HJs= +k8s.io/client-go v0.35.7/go.mod h1:uksk4ZVg/i4PrgsMsludkEe7Cp6v8hJ9wvje+2Ekn+c= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.mod new file mode 100644 index 0000000000..d664795622 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go deleted file mode 100644 index 1ab25c3a8d..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-35/tools.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2026 The Kubernetes Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//go:build tools - -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. -package tools - -import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" - _ "sigs.k8s.io/cri-tools/pkg/version" -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.mod new file mode 100644 index 0000000000..168c039119 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins + +go 1.24.2 + +require github.com/containernetworking/plugins v1.9.1 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.sum new file mode 100644 index 0000000000..7aa17cb1c2 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/go.sum @@ -0,0 +1,2 @@ +github.com/containernetworking/plugins v1.9.1 h1:8oU6WsIsU3bpnNZuvHp74a6cE1MJwbj2P7s4/yTUNlA= +github.com/containernetworking/plugins v1.9.1/go.mod h1:fj7kS55qg3o/RgS+WGsF3+ZxwIImMPusQZKzBpcSr4c= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/tools.go new file mode 100644 index 0000000000..8b8ae00e8b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cni-plugins/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containernetworking/plugins/pkg/utils/buildversion" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.mod new file mode 100644 index 0000000000..7d4f1b7dd4 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd + +go 1.26.3 + +require github.com/containerd/containerd/v2 v2.3.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.sum new file mode 100644 index 0000000000..67f155c6e1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/go.sum @@ -0,0 +1,2 @@ +github.com/containerd/containerd/v2 v2.3.2 h1:eLven1YxRMkeiKu7IcMrPKE+gn8sGR1DqHbbshMEvWM= +github.com/containerd/containerd/v2 v2.3.2/go.mod h1:rHKGm3VW6wNrINb3x8mNT+w7qYXFVElTt/8HTuxVhD4= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/tools.go new file mode 100644 index 0000000000..cc4a91c749 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/containerd/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/containerd/containerd/v2/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.mod new file mode 100644 index 0000000000..88377f9c46 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools + +go 1.26.2 + +require sigs.k8s.io/cri-tools v1.36.0 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.sum new file mode 100644 index 0000000000..49c0d9db31 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/go.sum @@ -0,0 +1,2 @@ +sigs.k8s.io/cri-tools v1.36.0 h1:Xt+LLvBVH1Fnp/AR2EyHApyWS/88y2KlWjlDc2HR+aw= +sigs.k8s.io/cri-tools v1.36.0/go.mod h1:6G/U59mqfhCocDGq5nET3A77GIf7h7ZZc93VM+uPS0U= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/tools.go new file mode 100644 index 0000000000..a51fd3403e --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/cri-tools/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "sigs.k8s.io/cri-tools/pkg/version" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/go.mod deleted file mode 100644 index f97a9b6775..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36 - -go 1.24 - -require ( - github.com/containerd/containerd/v2 v2.3.2 - github.com/containernetworking/plugins v1.9.1 - github.com/opencontainers/runc v1.4.3 - k8s.io/client-go v0.36.3 - sigs.k8s.io/cri-tools v1.36.0 -) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.mod new file mode 100644 index 0000000000..720554bb17 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes + +go 1.26.0 + +require k8s.io/client-go v0.36.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.sum new file mode 100644 index 0000000000..b813eb46f1 --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/go.sum @@ -0,0 +1,2 @@ +k8s.io/client-go v0.36.3 h1:M4JdVzXxYcZk4fGpfDdYnxSwhLKWCFoQsHW6t+z8Hfg= +k8s.io/client-go v0.36.3/go.mod h1:gcPwr0c87vjjG6HB6pWEqOeuYVoXSsREjzux2j6GF30= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/tools.go new file mode 100644 index 0000000000..10c962f7de --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/kubernetes/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "k8s.io/client-go/util/homedir" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.mod new file mode 100644 index 0000000000..10950b14ad --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.mod @@ -0,0 +1,5 @@ +module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc + +go 1.24.0 + +require github.com/opencontainers/runc v1.4.3 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.sum new file mode 100644 index 0000000000..92886ac1bd --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/go.sum @@ -0,0 +1,2 @@ +github.com/opencontainers/runc v1.4.3 h1:/bq84roxG30xEICkFodXzMEVQFs7kzo4lCiZME1uKxI= +github.com/opencontainers/runc v1.4.3/go.mod h1:ufk5PTTsy5pnGBAvTh50e+eqGk01pYH2YcVxh557Qlk= diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/tools.go new file mode 100644 index 0000000000..d5c1418e2b --- /dev/null +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/runc/tools.go @@ -0,0 +1,24 @@ +// Copyright 2026 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build tools + +// Package tools keeps the tracked module in go.mod. Dependabot always +// runs go mod tidy after an update, and tidy drops requirements that no +// package imports. +package tools + +import ( + _ "github.com/opencontainers/runc/types/features" +) diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go b/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go deleted file mode 100644 index 1ab25c3a8d..0000000000 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-36/tools.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2026 The Kubernetes Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//go:build tools - -// Keep the tracked modules in go.mod when Dependabot runs go mod tidy. -package tools - -import ( - _ "github.com/containerd/containerd/v2/client" - _ "github.com/containernetworking/plugins/pkg/ip" - _ "github.com/opencontainers/runc/libcontainer" - _ "k8s.io/client-go/kubernetes" - _ "sigs.k8s.io/cri-tools/pkg/version" -) From a2221971391ac3a164069b4fcbd2a98682874e8f Mon Sep 17 00:00:00 2001 From: Maximilian Rink Date: Fri, 4 Sep 2026 16:20:09 +0200 Subject: [PATCH 3/3] capi: apply CNI plugins v1.6.2 to the 1.32 matrix entry Reproduces Dependabot #2145 against the per-dependency tracking layout: bump the release-1-32 cni-plugins tracking module to github.com/containernetworking/plugins v1.6.2 and regenerate the matrix with sync-tracking, which lifts kubernetes_cni_semver for 1.32 to v1.6.2. The kubernetes-cni package versions stay at 1.6.0-1.1 and 1.6.0 because Kubernetes 1.32 ships kubernetes-cni 1.6.0. The tarball and package versions are tracked independently, so URL-based targets pick up the newer tarball while package-based targets keep the pinned package. --- docs/book/src/capi/kubernetes-version-matrix.md | 5 ++++- .../release-1-32/cni-plugins/go.mod | 2 +- .../release-1-32/cni-plugins/go.sum | 4 ++-- images/capi/packer/config/kubernetes-version-matrix.yaml | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/book/src/capi/kubernetes-version-matrix.md b/docs/book/src/capi/kubernetes-version-matrix.md index a518865771..1c6b02b6fe 100644 --- a/docs/book/src/capi/kubernetes-version-matrix.md +++ b/docs/book/src/capi/kubernetes-version-matrix.md @@ -75,7 +75,10 @@ go.sum fails instead of passing quietly. independently of `kubernetes_cni_deb_version` and `kubernetes_cni_rpm_version`, which pin the distro `kubernetes-cni` package. The two are versioned separately upstream, so `update --write` refreshes the -package versions and carries the tarball version over unchanged. +package versions and carries the tarball version over unchanged. A CNI module +update can therefore advance `kubernetes_cni_semver` before the matching +`kubernetes-cni` package is published: URL-based targets then install the newer +tarball while package-based targets keep the pinned package version. More generally, `update --write` only rewrites what it resolves from upstream release metadata: the Kubernetes version fields, the kubernetes-cni package diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod index b2241c49f4..71e791a3f6 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.mod @@ -2,4 +2,4 @@ module sigs.k8s.io/image-builder/images/capi/packer/config/kubernetes-version-de go 1.24 -require github.com/containernetworking/plugins v1.6.0 +require github.com/containernetworking/plugins v1.6.2 diff --git a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum index 3dc3c681ab..473fd79262 100644 --- a/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum +++ b/images/capi/packer/config/kubernetes-version-dependencies/release-1-32/cni-plugins/go.sum @@ -1,2 +1,2 @@ -github.com/containernetworking/plugins v1.6.0 h1:lrsUrLF7QODLx6gncHOqk/pnCiC7c6bvDAskV4KUifQ= -github.com/containernetworking/plugins v1.6.0/go.mod h1:rYLQWMJz/dYuW1XhHdc9xuzdkgbkWEEjwOhUm84+288= +github.com/containernetworking/plugins v1.6.2 h1:pqP8Mq923TLyef5g97XfJ/xpDeVek4yF8A4mzy9Tc4U= +github.com/containernetworking/plugins v1.6.2/go.mod h1:SP5UG3jDO9LtmfbBJdP+nl3A1atOtbj2MBOYsnaxy64= diff --git a/images/capi/packer/config/kubernetes-version-matrix.yaml b/images/capi/packer/config/kubernetes-version-matrix.yaml index 2f331f3c02..3bfa5d47f7 100644 --- a/images/capi/packer/config/kubernetes-version-matrix.yaml +++ b/images/capi/packer/config/kubernetes-version-matrix.yaml @@ -34,7 +34,7 @@ releasePins: kubernetes_cni_deb_version: "1.6.0-1.1" kubernetes_cni_http_source: "https://github.com/containernetworking/plugins/releases/download" kubernetes_cni_rpm_version: "1.6.0" - kubernetes_cni_semver: "v1.6.0" + kubernetes_cni_semver: "v1.6.2" kubernetes_deb_version: "1.32.13-1.1" kubernetes_rpm_version: "1.32.13" kubernetes_semver: "v1.32.13"