Commit 7de9980c authored by barnettZQG's avatar barnettZQG Committed by github-actions[bot]
Browse files

Fix: optimized the version comparison

Signed-off-by: default avatarbarnettZQG <barnett.zqg@gmail.com>
(cherry picked from commit 8bfab07f8ff1e28752952c41b665a7c5fcb237ac)
parent 73996662
Showing with 33 additions and 1 deletion
+33 -1
......@@ -61,6 +61,7 @@ import (
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1"
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
"github.com/oam-dev/kubevela/apis/types"
"github.com/oam-dev/kubevela/pkg/apiserver/utils/log"
utils2 "github.com/oam-dev/kubevela/pkg/controller/utils"
cuemodel "github.com/oam-dev/kubevela/pkg/cue/model"
"github.com/oam-dev/kubevela/pkg/cue/model/value"
......@@ -1418,13 +1419,29 @@ func checkSemVer(actual string, require string) (bool, error) {
l := strings.ReplaceAll(require, "v", " ")
constraint, err := semver.NewConstraint(l)
if err != nil {
log.Logger.Errorf("fail to new constraint: %s", err.Error())
return false, err
}
v, err := semver.NewVersion(smeVer)
if err != nil {
log.Logger.Errorf("fail to new version %s: %s", smeVer, err.Error())
return false, err
}
return constraint.Check(v), nil
if constraint.Check(v) {
return true, nil
}
if strings.Contains(actual, "-") && !strings.Contains(require, "-") {
smeVer := strings.TrimPrefix(actual[:strings.Index(actual, "-")], "v")
v, err := semver.NewVersion(smeVer)
if err != nil {
log.Logger.Errorf("fail to new version %s: %s", smeVer, err.Error())
return false, err
}
if constraint.Check(v) {
return true, nil
}
}
return false, nil
}
func fetchVelaCoreImageTag(ctx context.Context, k8sClient client.Client) (string, error) {
......
......@@ -763,6 +763,21 @@ func TestCheckSemVer(t *testing.T) {
require: ">=v1.3.0-beta.2",
res: true,
},
{
actual: "v1.4.0-beta.1",
require: ">=v1.3.0",
res: true,
},
{
actual: "v1.4.0",
require: ">=v1.3.0-beta.2",
res: true,
},
{
actual: "1.2.4-beta.2",
require: ">=v1.2.4-beta.3",
res: false,
},
}
for _, testCase := range testCases {
result, err := checkSemVer(testCase.actual, testCase.require)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment