mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Bug: Fix build-frontend* config checks (#70076)
* Fix frontend config checks * Exclude test tag events
This commit is contained in:
committed by
GitHub
parent
193247bc73
commit
5a36fa5f8a
@@ -16,9 +16,8 @@ func BuildFrontend(c *cli.Context) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
version := metadata.GrafanaVersion
|
|
||||||
|
|
||||||
cfg, mode, err := frontend.GetConfig(c, version)
|
cfg, mode, err := frontend.GetConfig(c, metadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,26 +2,21 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/build/config"
|
||||||
"github.com/grafana/grafana/pkg/build/errutil"
|
"github.com/grafana/grafana/pkg/build/errutil"
|
||||||
"github.com/grafana/grafana/pkg/build/frontend"
|
"github.com/grafana/grafana/pkg/build/frontend"
|
||||||
"github.com/grafana/grafana/pkg/build/syncutil"
|
"github.com/grafana/grafana/pkg/build/syncutil"
|
||||||
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func BuildFrontendPackages(c *cli.Context) error {
|
func BuildFrontendPackages(c *cli.Context) error {
|
||||||
version := ""
|
metadata, err := config.GenerateMetadata(c)
|
||||||
if c.NArg() == 1 {
|
if err != nil {
|
||||||
// Fixes scenario where an incompatible semver is provided to lerna, which will cause the step to fail.
|
return err
|
||||||
// When there is an invalid semver, a frontend package won't be published anyways.
|
|
||||||
if strings.Count(version, ".") == 2 {
|
|
||||||
version = strings.TrimPrefix(c.Args().Get(0), "v")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, mode, err := frontend.GetConfig(c, version)
|
cfg, mode, err := frontend.GetConfig(c, metadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ func generateVersionFromBuildID() (string, error) {
|
|||||||
return "", fmt.Errorf("unable to get DRONE_BUILD_NUMBER environmental variable")
|
return "", fmt.Errorf("unable to get DRONE_BUILD_NUMBER environmental variable")
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
version, err := GetGrafanaVersion(buildID, ".")
|
version, err := GenerateGrafanaVersion(buildID, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,26 @@ func GetBuildConfig(mode VersionMode) (*BuildConfig, error) {
|
|||||||
return nil, fmt.Errorf("mode '%s' not found in version list", mode)
|
return nil, fmt.Errorf("mode '%s' not found in version list", mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetGrafanaVersion gets the Grafana version from the package.json
|
// GenerateGrafanaVersion gets the Grafana version from the package.json
|
||||||
func GetGrafanaVersion(buildID, grafanaDir string) (string, error) {
|
func GenerateGrafanaVersion(buildID, grafanaDir string) (string, error) {
|
||||||
|
version, err := GetPackageJSONVersion(grafanaDir)
|
||||||
|
if err != nil {
|
||||||
|
return version, err
|
||||||
|
}
|
||||||
|
if buildID != "" {
|
||||||
|
buildID = shortenBuildID(buildID)
|
||||||
|
verComponents := strings.Split(version, "-")
|
||||||
|
version = verComponents[0]
|
||||||
|
if len(verComponents) > 1 {
|
||||||
|
buildID = fmt.Sprintf("%s%s", buildID, verComponents[1])
|
||||||
|
}
|
||||||
|
version = fmt.Sprintf("%s-%s", version, buildID)
|
||||||
|
}
|
||||||
|
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPackageJSONVersion(grafanaDir string) (string, error) {
|
||||||
pkgJSONPath := filepath.Join(grafanaDir, "package.json")
|
pkgJSONPath := filepath.Join(grafanaDir, "package.json")
|
||||||
//nolint:gosec
|
//nolint:gosec
|
||||||
pkgJSONB, err := os.ReadFile(pkgJSONPath)
|
pkgJSONB, err := os.ReadFile(pkgJSONPath)
|
||||||
@@ -88,16 +106,6 @@ func GetGrafanaVersion(buildID, grafanaDir string) (string, error) {
|
|||||||
if version == "" {
|
if version == "" {
|
||||||
return "", fmt.Errorf("failed to read version from %q", pkgJSONPath)
|
return "", fmt.Errorf("failed to read version from %q", pkgJSONPath)
|
||||||
}
|
}
|
||||||
if buildID != "" {
|
|
||||||
buildID = shortenBuildID(buildID)
|
|
||||||
verComponents := strings.Split(version, "-")
|
|
||||||
version = verComponents[0]
|
|
||||||
if len(verComponents) > 1 {
|
|
||||||
buildID = fmt.Sprintf("%s%s", buildID, verComponents[1])
|
|
||||||
}
|
|
||||||
version = fmt.Sprintf("%s-%s", version, buildID)
|
|
||||||
}
|
|
||||||
|
|
||||||
return version, nil
|
return version, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,31 +9,24 @@ import (
|
|||||||
|
|
||||||
const GrafanaDir = "."
|
const GrafanaDir = "."
|
||||||
|
|
||||||
func GetConfig(c *cli.Context, inputTagVersion string) (config.Config, config.Edition, error) {
|
func GetConfig(c *cli.Context, metadata config.Metadata) (config.Config, config.Edition, error) {
|
||||||
cfg := config.Config{
|
cfg := config.Config{
|
||||||
NumWorkers: c.Int("jobs"),
|
NumWorkers: c.Int("jobs"),
|
||||||
GitHubToken: c.String("github-token"),
|
GitHubToken: c.String("github-token"),
|
||||||
PackageVersion: inputTagVersion,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mode := config.Edition(c.String("edition"))
|
mode := config.Edition(c.String("edition"))
|
||||||
buildID := c.String("build-id")
|
|
||||||
packageVersion, err := config.GetGrafanaVersion(buildID, GrafanaDir)
|
|
||||||
if err != nil {
|
|
||||||
return config.Config{}, "", cli.Exit(err.Error(), 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
if inputTagVersion == "" {
|
if metadata.ReleaseMode.Mode == config.TagMode && !metadata.ReleaseMode.IsTest {
|
||||||
cfg.PackageVersion = packageVersion
|
packageJSONVersion, err := config.GetPackageJSONVersion(GrafanaDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return config.Config{}, config.EditionOSS, cli.Exit(err.Error(), 1)
|
return config.Config{}, "", err
|
||||||
|
}
|
||||||
|
if metadata.GrafanaVersion != packageJSONVersion {
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
return cfg, mode, err
|
|
||||||
}
|
|
||||||
if inputTagVersion != packageVersion {
|
|
||||||
return config.Config{}, "", cli.Exit(fmt.Errorf("package.json version and input tag version differ %s != %s.\nPlease update package.json", packageVersion, inputTagVersion), 1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg.PackageVersion = inputTagVersion
|
cfg.PackageVersion = metadata.GrafanaVersion
|
||||||
return cfg, mode, nil
|
return cfg, mode, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ package frontend
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/build/config"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
@@ -13,6 +15,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
jobs = "jobs"
|
jobs = "jobs"
|
||||||
githubToken = "github-token"
|
githubToken = "github-token"
|
||||||
|
buildID = "build-id"
|
||||||
)
|
)
|
||||||
|
|
||||||
type packageJson struct {
|
type packageJson struct {
|
||||||
@@ -26,41 +29,47 @@ func TestGetConfig(t *testing.T) {
|
|||||||
ctx *cli.Context
|
ctx *cli.Context
|
||||||
name string
|
name string
|
||||||
packageJsonVersion string
|
packageJsonVersion string
|
||||||
tagVersion string
|
metadata config.Metadata
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, "", flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||||
name: "package.json matches tag",
|
name: "package.json matches tag",
|
||||||
packageJsonVersion: "10.0.0",
|
packageJsonVersion: "10.0.0",
|
||||||
tagVersion: "10.0.0",
|
metadata: config.Metadata{GrafanaVersion: "10.0.0", ReleaseMode: config.ReleaseMode{Mode: config.TagMode}},
|
||||||
wantErr: false,
|
wantErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, "", flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||||
name: "package.json doesn't match tag",
|
name: "package.json doesn't match tag",
|
||||||
packageJsonVersion: "10.1.0",
|
packageJsonVersion: "10.1.0",
|
||||||
tagVersion: "10.0.0",
|
metadata: config.Metadata{GrafanaVersion: "10.0.0", ReleaseMode: config.ReleaseMode{Mode: config.TagMode}},
|
||||||
wantErr: true,
|
wantErr: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, "", flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||||
name: "non-tag event",
|
name: "test tag event, check should be skipped",
|
||||||
packageJsonVersion: "10.1.0",
|
packageJsonVersion: "10.1.0",
|
||||||
tagVersion: "",
|
metadata: config.Metadata{GrafanaVersion: "10.1.0-test", ReleaseMode: config.ReleaseMode{Mode: config.TagMode, IsTest: true}},
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, buildID, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||||
|
name: "non-tag event",
|
||||||
|
packageJsonVersion: "10.1.0-pre",
|
||||||
|
metadata: config.Metadata{GrafanaVersion: "10.1.0-12345pre", ReleaseMode: config.ReleaseMode{Mode: config.PullRequestMode}},
|
||||||
wantErr: false,
|
wantErr: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
var context cli.Context
|
|
||||||
err := createTempPackageJson(t, tt.packageJsonVersion)
|
err := createTempPackageJson(t, tt.packageJsonVersion)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer deleteTempPackageJson(t)
|
|
||||||
|
|
||||||
got, _, err := GetConfig(&context, tt.tagVersion)
|
got, _, err := GetConfig(tt.ctx, tt.metadata)
|
||||||
if !tt.wantErr {
|
if !tt.wantErr {
|
||||||
require.Equal(t, got.PackageVersion, tt.packageJsonVersion)
|
fmt.Println(got.PackageVersion + " : " + tt.metadata.GrafanaVersion)
|
||||||
|
require.Equal(t, got.PackageVersion, tt.metadata.GrafanaVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
if tt.wantErr {
|
if tt.wantErr {
|
||||||
@@ -71,7 +80,7 @@ func TestGetConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setFlags(t *testing.T, flag1, flag2 string, flagSet *flag.FlagSet) *flag.FlagSet {
|
func setFlags(t *testing.T, flag1, flag2, flag3 string, flagSet *flag.FlagSet) *flag.FlagSet {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if flag1 != "" {
|
if flag1 != "" {
|
||||||
flagSet.StringVar(&flag1, jobs, "2", "")
|
flagSet.StringVar(&flag1, jobs, "2", "")
|
||||||
@@ -79,6 +88,9 @@ func setFlags(t *testing.T, flag1, flag2 string, flagSet *flag.FlagSet) *flag.Fl
|
|||||||
if flag2 != "" {
|
if flag2 != "" {
|
||||||
flagSet.StringVar(&flag2, githubToken, "token", "")
|
flagSet.StringVar(&flag2, githubToken, "token", "")
|
||||||
}
|
}
|
||||||
|
if flag3 != "" {
|
||||||
|
flagSet.StringVar(&flag3, buildID, "12345", "")
|
||||||
|
}
|
||||||
return flagSet
|
return flagSet
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,12 +103,9 @@ func createTempPackageJson(t *testing.T, version string) error {
|
|||||||
err := os.WriteFile("package.json", file, 0644)
|
err := os.WriteFile("package.json", file, 0644)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
err := os.RemoveAll("package.json")
|
||||||
|
require.NoError(t, err)
|
||||||
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteTempPackageJson(t *testing.T) {
|
|
||||||
t.Helper()
|
|
||||||
|
|
||||||
err := os.RemoveAll("package.json")
|
|
||||||
require.NoError(t, err)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user