diff options
| author | WillardHu <wei.hu@daocloud.io> | 2023-07-03 17:29:07 +0800 |
|---|---|---|
| committer | WillardHu <wei.hu@daocloud.io> | 2023-08-16 13:34:20 +0800 |
| commit | 19da896465143b9030e8667631ba7632669bc463 (patch) | |
| tree | d20b265292896b1935a1fe9345a5c3568e4dd9a2 | |
| parent | Merge pull request #4918 from ZhengXinwei-F/automated-cherry-pick-of-#4915-up... (diff) | |
| download | kubeedge-19da896465143b9030e8667631ba7632669bc463.tar.gz | |
Fixed the kubeedge-version flag does not take effect in the init & manifest generate command
Signed-off-by: WillardHu <wei.hu@daocloud.io>
| -rw-r--r-- | .github/workflows/main.yaml | 2 | ||||
| -rwxr-xr-x | hack/local-up-kubeedge.sh | 2 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/cloud/init.go | 29 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/cloud/manifest.go | 27 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/common/constant.go | 4 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/helm/installer.go | 1 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/common.go | 23 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/common_test.go | 35 | ||||
| -rwxr-xr-x | tests/scripts/keadm_e2e.sh | 1 |
9 files changed, 71 insertions, 53 deletions
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 662c4347a..f6980f37d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -163,7 +163,7 @@ jobs: PROTOCOL: - WebSocket - QUIC - timeout-minutes: 30 + timeout-minutes: 40 name: E2e test needs: image-prepare env: diff --git a/hack/local-up-kubeedge.sh b/hack/local-up-kubeedge.sh index 9535621d4..0c1f5be45 100755 --- a/hack/local-up-kubeedge.sh +++ b/hack/local-up-kubeedge.sh @@ -68,6 +68,8 @@ function cleanup { echo "Running kind: [kind delete cluster ${CLUSTER_CONTEXT}]" kind delete cluster ${CLUSTER_CONTEXT} + + docker system prune -f } if [[ "${ENABLE_DAEMON}" = false ]]; then diff --git a/keadm/cmd/keadm/app/cmd/cloud/init.go b/keadm/cmd/keadm/app/cmd/cloud/init.go index 1be993d04..1ba6dd9e2 100644 --- a/keadm/cmd/keadm/app/cmd/cloud/init.go +++ b/keadm/cmd/keadm/app/cmd/cloud/init.go @@ -18,7 +18,6 @@ package cloud import ( "fmt" - "strings" "github.com/blang/semver" "github.com/spf13/cobra" @@ -77,7 +76,7 @@ func NewCloudInit() *cobra.Command { return cmd } -//newInitOptions will initialise new instance of options everytime +// newInitOptions will initialise new instance of options everytime func newInitOptions() *types.InitOptions { opts := &types.InitOptions{} opts.KubeConfig = types.DefaultKubeConfig @@ -118,35 +117,15 @@ func addForceOptionsFlags(cmd *cobra.Command, initOpts *types.InitOptions) { "Forced installing the cloud components without waiting.") } -//AddInit2ToolsList reads the flagData (containing val and default val) and join options to fill the list of tools. +// AddInit2ToolsList reads the flagData (containing val and default val) and join options to fill the list of tools. func AddInit2ToolsList(toolList map[string]types.ToolsInstaller, initOpts *types.InitOptions) error { - var latestVersion string - var kubeedgeVersion string - for i := 0; i < util.RetryTimes; i++ { - version, err := util.GetLatestVersion() - if err != nil { - fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) - continue - } - if len(version) > 0 { - kubeedgeVersion = strings.TrimPrefix(version, "v") - latestVersion = version - break - } - } - if len(latestVersion) == 0 { - kubeedgeVersion = types.DefaultKubeEdgeVersion - fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", kubeedgeVersion) - } - common := util.Common{ - ToolVersion: semver.MustParse(kubeedgeVersion), + ToolVersion: semver.MustParse(util.GetHelmVersion(initOpts.KubeEdgeVersion, util.RetryTimes)), KubeConfig: initOpts.KubeConfig, } toolList["helm"] = &helm.KubeCloudHelmInstTool{ Common: common, AdvertiseAddress: initOpts.AdvertiseAddress, - KubeEdgeVersion: initOpts.KubeEdgeVersion, Manifests: initOpts.Manifests, Namespace: constants.SystemNamespace, DryRun: initOpts.DryRun, @@ -159,7 +138,7 @@ func AddInit2ToolsList(toolList map[string]types.ToolsInstaller, initOpts *types return nil } -//ExecuteInit the installation for each tool and start cloudcore +// ExecuteInit the installation for each tool and start cloudcore func ExecuteInit(toolList map[string]types.ToolsInstaller) error { return toolList["helm"].InstallTools() } diff --git a/keadm/cmd/keadm/app/cmd/cloud/manifest.go b/keadm/cmd/keadm/app/cmd/cloud/manifest.go index f4765ff76..44a8b81dd 100644 --- a/keadm/cmd/keadm/app/cmd/cloud/manifest.go +++ b/keadm/cmd/keadm/app/cmd/cloud/manifest.go @@ -18,7 +18,6 @@ package cloud import ( "fmt" - "strings" "github.com/blang/semver" "github.com/spf13/cobra" @@ -101,35 +100,15 @@ func addManifestsGenerateJoinOtherFlags(cmd *cobra.Command, initOpts *types.Init "Skip printing the contents of CRDs to stdout") } -//AddManifestsGenerate2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools. +// AddManifestsGenerate2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools. func AddManifestsGenerate2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, initOpts *types.InitOptions) error { - var latestVersion string - var kubeedgeVersion string - for i := 0; i < util.RetryTimes; i++ { - version, err := util.GetLatestVersion() - if err != nil { - fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) - continue - } - if len(version) > 0 { - kubeedgeVersion = strings.TrimPrefix(version, "v") - latestVersion = version - break - } - } - if len(latestVersion) == 0 { - kubeedgeVersion = types.DefaultKubeEdgeVersion - fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", kubeedgeVersion) - } - common := util.Common{ - ToolVersion: semver.MustParse(kubeedgeVersion), + ToolVersion: semver.MustParse(util.GetHelmVersion(initOpts.KubeEdgeVersion, util.RetryTimes)), KubeConfig: initOpts.KubeConfig, } toolList["helm"] = &helm.KubeCloudHelmInstTool{ Common: common, AdvertiseAddress: initOpts.AdvertiseAddress, - KubeEdgeVersion: initOpts.KubeEdgeVersion, Manifests: initOpts.Manifests, Namespace: constants.SystemNamespace, DryRun: initOpts.DryRun, @@ -141,7 +120,7 @@ func AddManifestsGenerate2ToolsList(toolList map[string]types.ToolsInstaller, fl return nil } -//ExecuteManifestsGenerate executes the installation for helm +// ExecuteManifestsGenerate executes the installation for helm func ExecuteManifestsGenerate(toolList map[string]types.ToolsInstaller) error { return toolList["helm"].InstallTools() } diff --git a/keadm/cmd/keadm/app/cmd/common/constant.go b/keadm/cmd/keadm/app/cmd/common/constant.go index 686fc2fcb..c1af48223 100644 --- a/keadm/cmd/keadm/app/cmd/common/constant.go +++ b/keadm/cmd/keadm/app/cmd/common/constant.go @@ -53,8 +53,8 @@ const ( // RuntimeType is default runtime type RuntimeType = "runtimetype" - // DefaultKubeEdgeVersion is the default KubeEdge version - DefaultKubeEdgeVersion = "1.13.0" + // DefaultKubeEdgeVersion is the default KubeEdge version, it must have no prefix 'v' + DefaultKubeEdgeVersion = "1.14.0" // Token sets the token used when edge applying for the certificate Token = "token" diff --git a/keadm/cmd/keadm/app/cmd/helm/installer.go b/keadm/cmd/keadm/app/cmd/helm/installer.go index 19d2f7586..639bd33b9 100644 --- a/keadm/cmd/keadm/app/cmd/helm/installer.go +++ b/keadm/cmd/keadm/app/cmd/helm/installer.go @@ -58,7 +58,6 @@ var ( type KubeCloudHelmInstTool struct { util.Common AdvertiseAddress string - KubeEdgeVersion string Manifests string Namespace string Sets []string diff --git a/keadm/cmd/keadm/app/cmd/util/common.go b/keadm/cmd/keadm/app/cmd/util/common.go index e3f1eec4d..90888ef1c 100644 --- a/keadm/cmd/keadm/app/cmd/util/common.go +++ b/keadm/cmd/keadm/app/cmd/util/common.go @@ -310,6 +310,29 @@ func validateStableVersion(remoteVersion, clientVersion string) (string, error) return remoteVersion, nil } +// GetHelmVersion returns the verified version of Helm. If the verification fails, +// obtain the remote version first and then use the default value +func GetHelmVersion(version string, retryTimes int) string { + if kubeReleaseRegex.MatchString(version) { + return strings.TrimPrefix(version, "v") + } + + for i := 0; i < retryTimes; i++ { + v, err := GetLatestVersion() + if err != nil { + fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) + continue + } + if v != "" { + // do not obtain remote version again + return GetHelmVersion(v, 0) + } + } + // returns default version + fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", types.DefaultKubeEdgeVersion) + return types.DefaultKubeEdgeVersion +} + // BuildConfig builds config from flags func BuildConfig(kubeConfig, master string) (conf *rest.Config, err error) { config, err := clientcmd.BuildConfigFromFlags(master, kubeConfig) diff --git a/keadm/cmd/keadm/app/cmd/util/common_test.go b/keadm/cmd/keadm/app/cmd/util/common_test.go index c8c3ea8d5..4e637a7c5 100644 --- a/keadm/cmd/keadm/app/cmd/util/common_test.go +++ b/keadm/cmd/keadm/app/cmd/util/common_test.go @@ -375,3 +375,38 @@ func TestValidateStableVersion(t *testing.T) { }) } } + +func TestGetHelmVersion(t *testing.T) { + cases := []struct { + name string + version string + retryTimes int // if zero, means don't obtant remote version + want string // if want is empty, means not check result + }{ + { + name: "get input version", + version: "v1.14.0", + want: "1.14.0", + }, + { + name: "get default version", + version: "1-14-0", + retryTimes: 0, + want: types.DefaultKubeEdgeVersion, + }, + { + name: "get remote version", + version: "1-14-0", + retryTimes: 1, + want: "", // obtain the remote version is not controllable + }, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + res := GetHelmVersion(c.version, c.retryTimes) + if c.want != "" && c.want != res { + t.Fatalf("expected output: %s, got: %s", c.want, res) + } + }) + } +} diff --git a/tests/scripts/keadm_e2e.sh b/tests/scripts/keadm_e2e.sh index a08e79057..9d8bd758a 100755 --- a/tests/scripts/keadm_e2e.sh +++ b/tests/scripts/keadm_e2e.sh @@ -62,6 +62,7 @@ function build_image() { set +e docker rmi $(docker images -f "dangling=true" -q) + docker system prune -f set -Ee } |
