From 50e14f30c3f6fa12bc06bab3acf7b61539d2f773 Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Mon, 30 Aug 2021 14:53:28 -0700 Subject: [PATCH] add automation for k8s version --- Makefile | 4 +--- .../golang_version/update_golang_version.go | 16 ++++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index af54a8bdea..eb3dbb63bb 100644 --- a/Makefile +++ b/Makefile @@ -34,9 +34,7 @@ RPM_REVISION ?= 0 # used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below # update this only by running `make update-golang-version` GO_VERSION ?= 1.16.7 -# Kubernetes uses k8s version in golang image version because: -# https://github.com/kubernetes/kubernetes/pull/103692#issuecomment-908659826 -# TODO: make automation update this #12374 +# update this only by running `make update-golang-version` GO_K8S_VERSION_PREFIX ?= v1.23.0 # replace "x.y.0" => "x.y". kube-cross and golang.org/dl use different formats for x.y.0 go versions diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go index 4d6c6e647e..7752cfd8fc 100644 --- a/hack/update/golang_version/update_golang_version.go +++ b/hack/update/golang_version/update_golang_version.go @@ -119,7 +119,8 @@ var ( "Makefile": { Replace: map[string]string{ // searching for 1.* so it does NOT match "KVM_GO_VERSION ?= $(GO_VERSION:.0=)" in the Makefile - `GO_VERSION \?= 1.*`: `GO_VERSION ?= {{.StableVersion}}`, + `GO_VERSION \?= 1.*`: `GO_VERSION ?= {{.StableVersion}}`, + `GO_K8S_VERSION \?= 1.*`: `GO_K8S_VERSION ?= {{.K8sVersion}}`, }, }, } @@ -134,6 +135,8 @@ var ( type Data struct { StableVersion string `json:"stableVersion"` StableVersionMM string `json:"stableVersionMM"` // go.mod wants go version in . format + K8SVersion string `json:"k8sVersionMM"` // as of v1.23.0 Kubernetes uses k8s version in golang image name because: https://github.com/kubernetes/kubernetes/pull/103692#issuecomment-908659826 + } func main() { @@ -142,18 +145,18 @@ func main() { defer cancel() // get Golang stable version - stable, stableMM, err := goVersions() + stable, stableMM, k8sVersion, err := goVersions() if err != nil || stable == "" || stableMM == "" { klog.Fatalf("Unable to get Golang stable version: %v", err) } - data := Data{StableVersion: stable, StableVersionMM: stableMM} + data := Data{StableVersion: stable, StableVersionMM: stableMM, K8SVersion: k8sVersion} klog.Infof("Golang stable version: %s", data.StableVersion) update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue) } // goVersion returns Golang stable version. -func goVersions() (stable, stableMM string, err error) { +func goVersions() (stable, stableMM, k8sVersion string, err error) { // will update to the same image that kubernetes project uses resp, err := http.Get("https://raw.githubusercontent.com/kubernetes/kubernetes/master/build/build-image/cross/VERSION") if err != nil { @@ -164,10 +167,11 @@ func goVersions() (stable, stableMM string, err error) { return "", "", err } // example response: v1.23.0-go1.17-buster.0 - stable = strings.TrimPrefix(string(body), "v") + stable = string(body) + k8sVersion := strings.Split(stable, "-")[0] stable = strings.Split(stable, "-")[1] stable = strings.Replace(stable, "go", "", 1) mmp := strings.SplitN(stable, ".", 3) stableMM = strings.Join(mmp[0:2], ".") // . version - return stable, stableMM, nil + return stable, stableMM, k8sVersion, nil }