CI: Fix updating current testdata file with Updating K8s version

pull/18385/head
Steven Powell 2024-03-14 10:42:51 -07:00
parent afbd3eb37d
commit d0d94f1805
1 changed files with 83 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import (
"k8s.io/klog/v2"
"k8s.io/minikube/hack/update"
"k8s.io/minikube/pkg/minikube/constants"
)
const (
@ -109,7 +110,9 @@ type Data struct {
LatestVersion string
LatestVersionMM string // LatestVersion in <major>.<minor> format
// for testdata: if StableVersion greater than 'LatestVersionMM.0' exists, LatestVersionP0 is 'LatestVersionMM.0', otherwise LatestVersionP0 is LatestVersion.
LatestVersionP0 string
LatestVersionP0 string
CurrentVersionMM string
CurrentVersionP0 string
}
func main() {
@ -124,6 +127,8 @@ func main() {
}
data := Data{StableVersion: stable, LatestVersion: latest, LatestVersionMM: latestMM, LatestVersionP0: latestP0}
updateCurrentTestDataFiles(latestMM, &data)
// Print PR title for GitHub action.
fmt.Printf("Bump Kubernetes version default: %s and latest: %s\n", data.StableVersion, data.LatestVersion)
@ -146,3 +151,80 @@ func k8sVersions(ctx context.Context, owner, repo string) (stable, latest, lates
}
return stable, latest, latestMM, latestP0, nil
}
// updateCurrentTestDataFiles the point of this function it to update the testdata files for the current `NewestKubernetesVersion`
// otherwise, we can run into an issue where there's a new Kubernetes minor version, so the existing testdata files are ignored
// but they're not ending in `.0` and are potentially ending with a prerelease tag such as `v1.29.0-rc.2`, resulting in the unit
// tests failing and requiring manual intervention to correct the testdata files.
func updateCurrentTestDataFiles(latestMM string, data *Data) {
currentMM := semver.MajorMinor(constants.NewestKubernetesVersion)
// if we're still on the same version, skip and we're already going to update these testdata files
if currentMM == latestMM {
return
}
data.CurrentVersionMM = currentMM
data.CurrentVersionP0 = currentMM + ".0"
currentSchema := map[string]update.Item{
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/containerd-api-port.yaml": {
Content: update.Loadf("templates/v1beta3/containerd-api-port.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/containerd-pod-network-cidr.yaml": {
Content: update.Loadf("templates/v1beta3/containerd-pod-network-cidr.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/containerd.yaml": {
Content: update.Loadf("templates/v1beta3/containerd.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/crio-options-gates.yaml": {
Content: update.Loadf("templates/v1beta3/crio-options-gates.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/crio.yaml": {
Content: update.Loadf("templates/v1beta3/crio.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/default.yaml": {
Content: update.Loadf("templates/v1beta3/default.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/dns.yaml": {
Content: update.Loadf("templates/v1beta3/dns.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/image-repository.yaml": {
Content: update.Loadf("templates/v1beta3/image-repository.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
"pkg/minikube/bootstrapper/bsutil/testdata/{{.CurrentVersionMM}}/options.yaml": {
Content: update.Loadf("templates/v1beta3/options.yaml"),
Replace: map[string]string{
`kubernetesVersion:.*`: `kubernetesVersion: {{.CurrentVersionP0}}`,
},
},
}
for k, v := range currentSchema {
schema[k] = v
}
}