diff --git a/go.mod b/go.mod index b91618517a4..1dc3c0ee191 100644 --- a/go.mod +++ b/go.mod @@ -265,6 +265,7 @@ require ( buf.build/gen/go/parca-dev/parca/bufbuild/connect-go v1.4.1-20221222094228-8b1d3d0f62e6.1 buf.build/gen/go/parca-dev/parca/protocolbuffers/go v1.28.1-20221222094228-8b1d3d0f62e6.4 github.com/Masterminds/semver/v3 v3.1.1 + github.com/blang/semver/v4 v4.0.0 github.com/dave/dst v0.27.2 github.com/go-jose/go-jose/v3 v3.0.0 github.com/grafana/go-mssqldb v0.9.1 diff --git a/go.sum b/go.sum index 37584b4c47d..585ec64005d 100644 --- a/go.sum +++ b/go.sum @@ -414,7 +414,10 @@ github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjL github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= github.com/blevesearch/mmap-go v1.0.2/go.mod h1:ol2qBqYaOUsGdm7aRMRrYGgPvnwLe6Y+7LMvAB5IbSA= diff --git a/pkg/build/frontend/config.go b/pkg/build/frontend/config.go index 398adcff752..318168de1d4 100644 --- a/pkg/build/frontend/config.go +++ b/pkg/build/frontend/config.go @@ -3,6 +3,7 @@ package frontend import ( "fmt" + "github.com/blang/semver/v4" "github.com/grafana/grafana/pkg/build/config" "github.com/urfave/cli/v2" ) @@ -22,7 +23,16 @@ func GetConfig(c *cli.Context, metadata config.Metadata) (config.Config, config. if err != nil { return config.Config{}, "", err } - if metadata.GrafanaVersion != packageJSONVersion { + semverGrafanaVersion, err := semver.Parse(metadata.GrafanaVersion) + if err != nil { + return config.Config{}, "", err + } + semverPackageJSONVersion, err := semver.Parse(packageJSONVersion) + if err != nil { + return config.Config{}, "", err + } + // Check if the semver digits of the tag are not equal + if semverGrafanaVersion.FinalizeVersion() != semverPackageJSONVersion.FinalizeVersion() { return config.Config{}, "", cli.Exit(fmt.Errorf("package.json version and input tag version differ %s != %s.\nPlease update package.json", packageJSONVersion, metadata.GrafanaVersion), 1) } } diff --git a/pkg/build/frontend/config_test.go b/pkg/build/frontend/config_test.go index d8bbfb4e9b1..f10892e1cef 100644 --- a/pkg/build/frontend/config_test.go +++ b/pkg/build/frontend/config_test.go @@ -3,7 +3,6 @@ package frontend import ( "encoding/json" "flag" - "fmt" "os" "testing" @@ -39,6 +38,13 @@ func TestGetConfig(t *testing.T) { metadata: config.Metadata{GrafanaVersion: "10.0.0", ReleaseMode: config.ReleaseMode{Mode: config.TagMode}}, wantErr: false, }, + { + ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, "", flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil), + name: "custom tag, package.json doesn't match", + packageJsonVersion: "10.0.0", + metadata: config.Metadata{GrafanaVersion: "10.0.0-abcd123pre", ReleaseMode: config.ReleaseMode{Mode: config.TagMode}}, + wantErr: false, + }, { ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, "", flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil), name: "package.json doesn't match tag", @@ -68,7 +74,6 @@ func TestGetConfig(t *testing.T) { got, _, err := GetConfig(tt.ctx, tt.metadata) if !tt.wantErr { - fmt.Println(got.PackageVersion + " : " + tt.metadata.GrafanaVersion) require.Equal(t, got.PackageVersion, tt.metadata.GrafanaVersion) }