mirror of https://github.com/kubevela/kubevela.git
Chore: swtich between old and new registry in vela install (#6173)
* Chore: swtich between old and new registry in vela install Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com> * add comments Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com> * minor fix Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com> --------- Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com>
This commit is contained in:
parent
64e4ab813d
commit
dabaf03e73
|
@ -190,7 +190,7 @@ func NewVersionListCommand(ioStream util.IOStreams) *cobra.Command {
|
|||
Args: cobra.ExactArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
helmHelper := helm.NewHelper()
|
||||
versions, err := helmHelper.ListVersions(kubevelaInstallerHelmRepoURL, kubeVelaChartName, true, nil)
|
||||
versions, err := helmHelper.ListVersions(LegacyKubeVelaInstallerHelmRepoURL, kubeVelaChartName, true, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -46,11 +46,14 @@ import (
|
|||
innerVersion "github.com/oam-dev/kubevela/version"
|
||||
)
|
||||
|
||||
// defaultConstraint
|
||||
// const defaultConstraint = ">= 1.19, <= 1.24"
|
||||
const defaultConstraint = ">= 1.19"
|
||||
|
||||
const kubevelaInstallerHelmRepoURL = "https://kubevela.github.io/charts/"
|
||||
const (
|
||||
// LegacyKubeVelaInstallerHelmRepoURL is used for kubevela version < v1.9.0
|
||||
LegacyKubeVelaInstallerHelmRepoURL = "https://charts.kubevela.net/core/"
|
||||
// KubeVelaInstallerHelmRepoURL is used for kubevela version >= v1.9.0
|
||||
KubeVelaInstallerHelmRepoURL = "https://kubevela.github.io/charts/"
|
||||
)
|
||||
|
||||
// kubeVelaReleaseName release name
|
||||
const kubeVelaReleaseName = "kubevela"
|
||||
|
@ -106,10 +109,14 @@ func NewInstallCommand(c common.Args, order string, ioStreams util.IOStreams) *c
|
|||
return nil
|
||||
},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
v, err := version.NewVersion(installArgs.Version)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Step1: Download Helm Chart
|
||||
ioStreams.Info("Installing KubeVela Core ...")
|
||||
if installArgs.ChartFilePath == "" {
|
||||
installArgs.ChartFilePath = getKubeVelaHelmChartRepoURL(installArgs.Version)
|
||||
installArgs.ChartFilePath = getKubeVelaHelmChartRepoURL(v)
|
||||
}
|
||||
chart, err := installArgs.helmHelper.LoadCharts(installArgs.ChartFilePath, nil)
|
||||
if err != nil {
|
||||
|
@ -282,13 +289,14 @@ func getConstraintVersion(constraint string) string {
|
|||
return constraint
|
||||
}
|
||||
|
||||
func getKubeVelaHelmChartRepoURL(version string) string {
|
||||
// Determine installer version
|
||||
if innerVersion.IsOfficialKubeVelaVersion(version) {
|
||||
version, _ := innerVersion.GetOfficialKubeVelaVersion(version)
|
||||
return kubevelaInstallerHelmRepoURL + kubeVelaChartName + "-" + version + ".tgz"
|
||||
func getKubeVelaHelmChartRepoURL(ver *version.Version) string {
|
||||
// Determine use legacy repo or new one.
|
||||
useLegacy := innerVersion.ShouldUseLegacyHelmRepo(ver)
|
||||
helmRepo := KubeVelaInstallerHelmRepoURL
|
||||
if useLegacy {
|
||||
helmRepo = LegacyKubeVelaInstallerHelmRepoURL
|
||||
}
|
||||
return kubevelaInstallerHelmRepoURL + kubeVelaChartName + "-" + version + ".tgz"
|
||||
return helmRepo + kubeVelaChartName + "-" + ver.String() + ".tgz"
|
||||
}
|
||||
|
||||
func waitKubeVelaControllerRunning(kubeClient client.Client, namespace, manifest string) error {
|
||||
|
|
|
@ -19,14 +19,37 @@ package cli
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/go-version"
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGetKubeVelaHelmChartRepoURL(t *testing.T) {
|
||||
assert.Equal(t, getKubeVelaHelmChartRepoURL("v1.2.2"), "https://kubevela.github.io/charts/vela-core-1.2.2.tgz")
|
||||
assert.Equal(t, getKubeVelaHelmChartRepoURL("1.1.11"), "https://kubevela.github.io/charts/vela-core-1.1.11.tgz")
|
||||
cases := []struct {
|
||||
ver string
|
||||
url string
|
||||
}{
|
||||
{
|
||||
ver: "v1.2.2",
|
||||
url: "https://charts.kubevela.net/core/vela-core-1.2.2.tgz",
|
||||
},
|
||||
{
|
||||
ver: "1.1.11",
|
||||
url: "https://charts.kubevela.net/core/vela-core-1.1.11.tgz",
|
||||
},
|
||||
{
|
||||
ver: "1.9.2",
|
||||
// new helm repo
|
||||
url: "https://kubevela.github.io/charts/vela-core-1.9.2.tgz",
|
||||
},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
v, err := version.NewVersion(c.ver)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, getKubeVelaHelmChartRepoURL(v), c.url)
|
||||
}
|
||||
}
|
||||
|
||||
var _ = Describe("Test Install Command", func() {
|
||||
|
|
|
@ -44,3 +44,22 @@ func GetOfficialKubeVelaVersion(versionStr string) (string, error) {
|
|||
}
|
||||
return v[:len(v)-len(metadata)], nil
|
||||
}
|
||||
|
||||
// ShouldUseLegacyHelmRepo checks whether the provided version should use the legacy helm repo
|
||||
func ShouldUseLegacyHelmRepo(ver *version.Version) bool {
|
||||
if ver.LessThan(version.Must(version.NewVersion("1.8.2"))) {
|
||||
return true
|
||||
}
|
||||
|
||||
if ver.GreaterThanOrEqual(version.Must(version.NewVersion("1.9.0"))) {
|
||||
return false
|
||||
}
|
||||
|
||||
// After v1.9.0-beta.1.post1, we use the new helm repo
|
||||
switch ver.Prerelease() {
|
||||
case "beta.1.post1", "beta.2", "beta.3":
|
||||
return false
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package version
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/go-version"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
@ -41,3 +42,33 @@ func TestGetVersion(t *testing.T) {
|
|||
assert.Nil(t, err)
|
||||
assert.Equal(t, "1.2.0", version)
|
||||
}
|
||||
|
||||
func TestShouldUseLegacyHelmRepo(t *testing.T) {
|
||||
tests := []struct {
|
||||
ver string
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
ver: "v1.2.0",
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
ver: "v1.9.0-beta.1",
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
ver: "v1.9.0-beta.1.post1",
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
ver: "v1.9.1",
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.ver, func(t *testing.T) {
|
||||
ver := version.Must(version.NewVersion(tt.ver))
|
||||
assert.Equalf(t, tt.want, ShouldUseLegacyHelmRepo(ver), "ShouldUseLegacyHelmRepo(%v)", tt.ver)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue