diff --git a/cmd/run.go b/cmd/run.go index f91c772e6..45247cd09 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -230,7 +230,7 @@ dapr run --run-file /path/to/directory -k output.DaprGRPCPort) } - if semver.Compare(fmt.Sprintf("v%v", daprVer.RuntimeVersion), "v1.14.0-rc.1") == -1 { + if (daprVer.RuntimeVersion != "edge") && (semver.Compare(fmt.Sprintf("v%v", daprVer.RuntimeVersion), "v1.14.0-rc.1") == -1) { print.InfoStatusEvent(os.Stdout, "The scheduler is only compatible with dapr runtime 1.14 onwards.") for i, arg := range output.DaprCMD.Args { if strings.HasPrefix(arg, "--scheduler-host-address") { diff --git a/pkg/version/version.go b/pkg/version/version.go index d25f6d92e..22aa2e75a 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -119,11 +119,18 @@ func GetLatestReleaseGithub(githubURL string) (string, error) { latestVersion := defaultVersion for _, release := range githubRepoReleases { - if !strings.Contains(release.TagName, "-rc") { - cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v")) - if cur.GreaterThan(latestVersion) { - latestVersion = cur - } + cur, err := version.NewVersion(strings.TrimPrefix(release.TagName, "v")) + if err != nil || cur == nil { + print.WarningStatusEvent(os.Stdout, "Malformed version %s, skipping", release.TagName) + continue + } + // Prerelease versions and versions with metadata are skipped. + if cur.Prerelease() != "" || cur.Metadata() != "" { + continue + } + + if cur.GreaterThan(latestVersion) { + latestVersion = cur } } diff --git a/pkg/version/version_test.go b/pkg/version/version_test.go index 0642e2700..24cb69b93 100644 --- a/pkg/version/version_test.go +++ b/pkg/version/version_test.go @@ -162,6 +162,52 @@ func TestGetVersionsGithub(t *testing.T) { "no releases", "", }, + { + "Malformed version no releases", + "/malformed_version_no_releases", + `[ + { + "url": "https://api.github.com/repos/dapr/dapr/releases/186741665", + "html_url": "https://github.com/dapr/dapr/releases/tag/vedge", + "id": 186741665, + "tag_name": "vedge", + "target_commitish": "master", + "name": "Dapr Runtime vedge", + "draft": false, + "prerelease": false + } +] `, + "no releases", + "", + }, + { + "Malformed version with latest", + "/malformed_version_with_latest", + `[ + { + "url": "https://api.github.com/repos/dapr/dapr/releases/186741665", + "html_url": "https://github.com/dapr/dapr/releases/tag/vedge", + "id": 186741665, + "tag_name": "vedge", + "target_commitish": "master", + "name": "Dapr Runtime vedge", + "draft": false, + "prerelease": false + }, + { + "url": "https://api.github.com/repos/dapr/dapr/releases/44766923", + "html_url": "https://github.com/dapr/dapr/releases/tag/v1.5.1", + "id": 44766923, + "tag_name": "v1.5.1", + "target_commitish": "master", + "name": "Dapr Runtime v1.5.1", + "draft": false, + "prerelease": false + } +] `, + "", + "1.5.1", + }, } m := http.NewServeMux() s := http.Server{Addr: ":12345", Handler: m, ReadHeaderTimeout: time.Duration(5) * time.Second}