Grafana Build: Sync Grafana versioning changes from build-pipeline (#53522)
* Sync version changes (cherry picked from commit fb449ba0376cd7d86928e8b08ef77a851488604b) Sync version refactoring changes * Update grabpl
This commit is contained in:
@@ -37,9 +37,9 @@ func BuildBackend(ctx *cli.Context) error {
|
||||
}
|
||||
)
|
||||
|
||||
mode, err := config.GetVersion(metadata.ReleaseMode)
|
||||
mode, err := config.GetVersion(metadata.ReleaseMode.Mode)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not get version / package info for mode '%s': %w", metadata.ReleaseMode, err)
|
||||
return fmt.Errorf("could not get version / package info for mode '%s': %w", metadata.ReleaseMode.Mode, err)
|
||||
}
|
||||
|
||||
const grafanaDir = "."
|
||||
|
||||
@@ -21,7 +21,7 @@ func BuildDocker(c *cli.Context) error {
|
||||
}
|
||||
|
||||
useUbuntu := c.Bool("ubuntu")
|
||||
verMode, err := config.GetVersion(metadata.ReleaseMode)
|
||||
verMode, err := config.GetVersion(metadata.ReleaseMode.Mode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ func BuildInternalPlugins(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
verMode, err := config.GetVersion(metadata.ReleaseMode)
|
||||
verMode, err := config.GetVersion(metadata.ReleaseMode.Mode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -14,10 +14,16 @@ import (
|
||||
|
||||
type Metadata struct {
|
||||
GrafanaVersion string `json:"version,omitempty"`
|
||||
ReleaseMode VersionMode `json:"releaseMode,omitempty"`
|
||||
ReleaseMode ReleaseMode `json:"releaseMode,omitempty"`
|
||||
GrabplVersion string `json:"grabplVersion,omitempty"`
|
||||
}
|
||||
|
||||
type ReleaseMode struct {
|
||||
Mode VersionMode `json:"mode,omitempty"`
|
||||
IsBeta bool `json:"isBeta,omitempty"`
|
||||
IsTest bool `json:"isTest,omitempty"`
|
||||
}
|
||||
|
||||
type PluginSignature struct {
|
||||
Sign bool `json:"sign,omitempty"`
|
||||
AdminSign bool `json:"adminSign,omitempty"`
|
||||
@@ -41,13 +47,17 @@ type Version struct {
|
||||
StorybookSrcDir string `json:"storybookSrcDir,omitempty"`
|
||||
}
|
||||
|
||||
func (md *Metadata) GetReleaseMode() (ReleaseMode, error) {
|
||||
return md.ReleaseMode, nil
|
||||
}
|
||||
|
||||
// Versions is a map of versions. Each key of the Versions map is an event that uses the the config as the value for that key.
|
||||
// For example, the 'pull_request' key will have data in it that might cause Grafana to be built differently in a pull request,
|
||||
// than the way it will be built in 'main'
|
||||
type VersionMap map[VersionMode]Version
|
||||
|
||||
// GetMetadata attempts to read the JSON file located at 'path' and decode it as a Metadata{} type.
|
||||
// If the provided path deos not exist, then an error is not returned. Instead, an empty metadata is returned with no error.
|
||||
// If the provided path does not exist, then an error is not returned. Instead, an empty metadata is returned with no error.
|
||||
func GetMetadata(path string) (*Metadata, error) {
|
||||
if _, err := os.Stat(path); err != nil {
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
@@ -142,21 +152,21 @@ func CheckDroneTargetBranch() (VersionMode, error) {
|
||||
return "", fmt.Errorf("unrecognized target branch: %s", target)
|
||||
}
|
||||
|
||||
func CheckSemverSuffix() (VersionMode, error) {
|
||||
func CheckSemverSuffix() (ReleaseMode, error) {
|
||||
reBetaRls := regexp.MustCompile(`beta.*`)
|
||||
reTestRls := regexp.MustCompile(`test.*`)
|
||||
tagSuffix, ok := os.LookupEnv("DRONE_SEMVER_PRERELEASE")
|
||||
if !ok || tagSuffix == "" {
|
||||
fmt.Println("DRONE_SEMVER_PRERELEASE doesn't exist for a tag, this is a release event...")
|
||||
return ReleaseMode, nil
|
||||
return ReleaseMode{Mode: TagMode}, nil
|
||||
}
|
||||
switch {
|
||||
case reBetaRls.MatchString(tagSuffix):
|
||||
return BetaReleaseMode, nil
|
||||
return ReleaseMode{Mode: TagMode, IsBeta: true}, nil
|
||||
case reTestRls.MatchString(tagSuffix):
|
||||
return TestReleaseMode, nil
|
||||
return ReleaseMode{Mode: TagMode, IsTest: true}, nil
|
||||
default:
|
||||
fmt.Printf("DRONE_SEMVER_PRERELEASE is custom string, release event with %s suffix\n", tagSuffix)
|
||||
return ReleaseMode, nil
|
||||
return ReleaseMode{Mode: TagMode}, nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,7 @@ type VersionMode string
|
||||
|
||||
const (
|
||||
MainMode VersionMode = "main"
|
||||
ReleaseMode VersionMode = "release"
|
||||
BetaReleaseMode VersionMode = "beta"
|
||||
TestReleaseMode VersionMode = "test"
|
||||
TagMode VersionMode = "release"
|
||||
ReleaseBranchMode VersionMode = "branch"
|
||||
PullRequestMode VersionMode = "pull_request"
|
||||
)
|
||||
|
||||
@@ -13,14 +13,14 @@ import (
|
||||
func TestGetMetadata(t *testing.T) {
|
||||
tcs := []struct {
|
||||
version string
|
||||
mode config.VersionMode
|
||||
mode config.ReleaseMode
|
||||
}{
|
||||
{"v1.2.3", config.ReleaseMode},
|
||||
{"v1.2.3-12345pre", config.PullRequestMode},
|
||||
{"v1.2.3-beta1", config.BetaReleaseMode},
|
||||
{"v1.2.3-test1", config.TestReleaseMode},
|
||||
{"v1.2.3-foobar", config.ReleaseBranchMode},
|
||||
{"v1.2.3-foobar", config.MainMode},
|
||||
{"v1.2.3", config.ReleaseMode{Mode: config.TagMode}},
|
||||
{"v1.2.3-12345pre", config.ReleaseMode{Mode: config.PullRequestMode}},
|
||||
{"v1.2.3-beta1", config.ReleaseMode{Mode: config.TagMode, IsBeta: true}},
|
||||
{"v1.2.3-test1", config.ReleaseMode{Mode: config.TagMode, IsTest: true}},
|
||||
{"v1.2.3-foobar", config.ReleaseMode{Mode: config.ReleaseBranchMode}},
|
||||
{"v1.2.3-foobar", config.ReleaseMode{Mode: config.PullRequestMode}},
|
||||
}
|
||||
|
||||
t.Run("Should return empty metadata, dist/ is not present", func(t *testing.T) {
|
||||
@@ -44,10 +44,10 @@ func TestGetMetadata(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func testMetadata(t *testing.T, dir string, version string, mode config.VersionMode) {
|
||||
func testMetadata(t *testing.T, dir string, version string, releaseMode config.ReleaseMode) {
|
||||
t.Helper()
|
||||
file := filepath.Join(dir, "version.json")
|
||||
createVersionJSON(t, version, file, mode)
|
||||
createVersionJSON(t, version, file, releaseMode)
|
||||
|
||||
metadata, err := config.GetMetadata(file)
|
||||
require.NoError(t, err)
|
||||
@@ -59,11 +59,11 @@ func testMetadata(t *testing.T, dir string, version string, mode config.VersionM
|
||||
t.Run("with a valid release mode from the built-in list", func(t *testing.T) {
|
||||
expMode := metadata.ReleaseMode
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expMode, mode)
|
||||
require.Equal(t, expMode, releaseMode)
|
||||
})
|
||||
|
||||
t.Run("with a valid configuration from a JSON file", func(t *testing.T) {
|
||||
version, err := config.GetVersion(metadata.ReleaseMode)
|
||||
version, err := config.GetVersion(metadata.ReleaseMode.Mode)
|
||||
require.NoError(t, err)
|
||||
parsed := verModeFromConfig(t, metadata)
|
||||
require.EqualValues(t, parsed, *version)
|
||||
@@ -77,15 +77,15 @@ func verModeFromConfig(t *testing.T, metadata *config.Metadata) config.Version {
|
||||
|
||||
require.NoError(t, json.Unmarshal(configJSON, &metadataComp))
|
||||
|
||||
return metadataComp[metadata.ReleaseMode]
|
||||
return metadataComp[metadata.ReleaseMode.Mode]
|
||||
}
|
||||
|
||||
func createVersionJSON(t *testing.T, version string, file string, mode config.VersionMode) {
|
||||
func createVersionJSON(t *testing.T, version string, file string, releaseMode config.ReleaseMode) {
|
||||
t.Helper()
|
||||
|
||||
metadata := &config.Metadata{
|
||||
GrafanaVersion: version,
|
||||
ReleaseMode: mode,
|
||||
ReleaseMode: releaseMode,
|
||||
}
|
||||
|
||||
//nolint:gosec
|
||||
|
||||
@@ -74,67 +74,7 @@ var Versions = VersionMap{
|
||||
PackagesBucketEnterprise2: "grafana-downloads-enterprise2",
|
||||
CDNAssetsBucket: "grafana-static-assets",
|
||||
},
|
||||
ReleaseMode: {
|
||||
Variants: []Variant{
|
||||
VariantArmV6,
|
||||
VariantArmV7,
|
||||
VariantArmV7Musl,
|
||||
VariantArm64,
|
||||
VariantArm64Musl,
|
||||
VariantDarwinAmd64,
|
||||
VariantWindowsAmd64,
|
||||
VariantLinuxAmd64,
|
||||
VariantLinuxAmd64Musl,
|
||||
},
|
||||
PluginSignature: PluginSignature{
|
||||
Sign: true,
|
||||
AdminSign: true,
|
||||
},
|
||||
Docker: Docker{
|
||||
ShouldSave: true,
|
||||
Architectures: []Architecture{
|
||||
ArchAMD64,
|
||||
ArchARM64,
|
||||
ArchARMv7,
|
||||
},
|
||||
},
|
||||
PackagesBucket: "grafana-prerelease/artifacts/downloads",
|
||||
CDNAssetsBucket: "grafana-prerelease",
|
||||
CDNAssetsDir: "artifacts/static-assets",
|
||||
StorybookBucket: "grafana-prerelease",
|
||||
StorybookSrcDir: "artifacts/storybook",
|
||||
},
|
||||
BetaReleaseMode: {
|
||||
Variants: []Variant{
|
||||
VariantArmV6,
|
||||
VariantArmV7,
|
||||
VariantArmV7Musl,
|
||||
VariantArm64,
|
||||
VariantArm64Musl,
|
||||
VariantDarwinAmd64,
|
||||
VariantWindowsAmd64,
|
||||
VariantLinuxAmd64,
|
||||
VariantLinuxAmd64Musl,
|
||||
},
|
||||
PluginSignature: PluginSignature{
|
||||
Sign: true,
|
||||
AdminSign: true,
|
||||
},
|
||||
Docker: Docker{
|
||||
ShouldSave: true,
|
||||
Architectures: []Architecture{
|
||||
ArchAMD64,
|
||||
ArchARM64,
|
||||
ArchARMv7,
|
||||
},
|
||||
},
|
||||
PackagesBucket: "grafana-prerelease/artifacts/downloads",
|
||||
CDNAssetsBucket: "grafana-prerelease",
|
||||
CDNAssetsDir: "artifacts/static-assets",
|
||||
StorybookBucket: "grafana-prerelease",
|
||||
StorybookSrcDir: "artifacts/storybook",
|
||||
},
|
||||
TestReleaseMode: {
|
||||
TagMode: {
|
||||
Variants: []Variant{
|
||||
VariantArmV6,
|
||||
VariantArmV7,
|
||||
|
||||
Reference in New Issue
Block a user