diff --git a/.drone.yml b/.drone.yml index 103256ecf2f..4b48aa009e0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1569,7 +1569,7 @@ steps: repo: - grafana/grafana - commands: - - ./bin/grabpl upload-cdn --edition oss + - ./bin/build upload-cdn --edition oss depends_on: - grafana-server environment: @@ -2135,7 +2135,7 @@ steps: event: - tag - commands: - - ./bin/grabpl upload-cdn --edition oss + - ./bin/build upload-cdn --edition oss depends_on: - grafana-server environment: @@ -2785,7 +2785,7 @@ steps: - success - failure - commands: - - ./bin/grabpl upload-cdn --edition enterprise + - ./bin/build upload-cdn --edition enterprise depends_on: - package environment: @@ -2826,7 +2826,7 @@ steps: image: grafana/build-container:1.6.4 name: package-enterprise2 - commands: - - ./bin/grabpl upload-cdn --edition enterprise2 + - ./bin/build upload-cdn --edition enterprise2 depends_on: - package-enterprise2 environment: @@ -4156,7 +4156,7 @@ steps: include: - packages/grafana-ui/** - commands: - - ./bin/grabpl upload-cdn --edition oss + - ./bin/build upload-cdn --edition oss depends_on: - grafana-server environment: @@ -4764,7 +4764,7 @@ steps: - success - failure - commands: - - ./bin/grabpl upload-cdn --edition enterprise + - ./bin/build upload-cdn --edition enterprise depends_on: - package environment: @@ -4812,7 +4812,7 @@ steps: image: grafana/build-container:1.6.4 name: package-enterprise2 - commands: - - ./bin/grabpl upload-cdn --edition enterprise2 + - ./bin/build upload-cdn --edition enterprise2 depends_on: - package-enterprise2 environment: @@ -5512,6 +5512,6 @@ kind: secret name: packages_secret_access_key --- kind: signature -hmac: 77ae647c9addfcd9966d462ca9967b85a87e18adfe0e9e0a2c6b1cf5d7f42493 +hmac: bdde811590573d22162d8305ced15080e8b20f2180b7491891c461427810a4b3 ... diff --git a/pkg/build/cmd/main.go b/pkg/build/cmd/main.go index 46d8ef8f32a..ba4f1f6eb0a 100644 --- a/pkg/build/cmd/main.go +++ b/pkg/build/cmd/main.go @@ -96,6 +96,14 @@ func main() { }, }, }, + { + Name: "upload-cdn", + Usage: "Upload public/* to a cdn bucket", + Action: UploadCDN, + Flags: []cli.Flag{ + &editionFlag, + }, + }, { Name: "shellcheck", Usage: "Run shellcheck on shell scripts", diff --git a/pkg/build/cmd/uploadcdn.go b/pkg/build/cmd/uploadcdn.go new file mode 100644 index 00000000000..e9c4b72acab --- /dev/null +++ b/pkg/build/cmd/uploadcdn.go @@ -0,0 +1,75 @@ +package main + +import ( + "fmt" + "log" + "os" + "path/filepath" + + "github.com/grafana/grafana/pkg/build/config" + "github.com/grafana/grafana/pkg/build/gcloud/storage" + "github.com/urfave/cli/v2" +) + +// UploadCDN implements the sub-command "upload-cdn". +func UploadCDN(c *cli.Context) error { + if c.NArg() > 0 { + if err := cli.ShowSubcommandHelp(c); err != nil { + return cli.NewExitError(err.Error(), 1) + } + return cli.NewExitError("", 1) + } + + metadata, err := GenerateMetadata(c) + if err != nil { + return err + } + + version := metadata.GrafanaVersion + if err != nil { + return cli.NewExitError(err.Error(), 1) + } + + buildConfig, err := config.GetBuildConfig(metadata.ReleaseMode.Mode) + if err != nil { + return err + } + + edition := os.Getenv("EDITION") + log.Printf("Uploading Grafana CDN Assets, version %s, %s edition...", version, edition) + + editionPath := "" + + switch config.Edition(edition) { + case config.EditionOSS: + editionPath = "grafana-oss" + case config.EditionEnterprise: + editionPath = "grafana" + case config.EditionEnterprise2: + editionPath = os.Getenv("ENTERPRISE2_CDN_PATH") + default: + panic(fmt.Sprintf("unrecognized edition %q", edition)) + } + + gcs, err := storage.New() + if err != nil { + return err + } + + bucket := gcs.Bucket(buildConfig.Buckets.CDNAssets) + srcPath := buildConfig.Buckets.CDNAssetsDir + srcPath = filepath.Join(srcPath, editionPath, version) + + if err := gcs.DeleteDir(c.Context, bucket, srcPath); err != nil { + return err + } + log.Printf("Successfully cleaned source: %s/%s\n", buildConfig.Buckets.CDNAssets, srcPath) + + if err := gcs.CopyLocalDir(c.Context, "./public", bucket, srcPath, false); err != nil { + return err + } + + log.Printf("Successfully uploaded cdn static assets to: %s/%s!\n", buildConfig.Buckets.CDNAssets, srcPath) + + return nil +} diff --git a/scripts/drone/steps/lib.star b/scripts/drone/steps/lib.star index d185b6fe567..bf45fc1a63d 100644 --- a/scripts/drone/steps/lib.star +++ b/scripts/drone/steps/lib.star @@ -354,7 +354,7 @@ def upload_cdn_step(edition, ver_mode, trigger=None): 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) }, 'commands': [ - './bin/grabpl upload-cdn --edition {}'.format(edition), + './bin/build upload-cdn --edition {}'.format(edition), ], } if trigger and ver_mode in ("release-branch", "main"):