mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Split go files * Modify publishartifacts.go * Split main * FIXME: Temp add GCSCopy to gcloud/storage * Fix lint * Exported flags * Update starlark - make drone * Further backend lint fixes * Add fallback_test.go * Fix go imports order * make drone * Remove GCSCopy from static assets * Remove GCSCopy from storybook * Fix lint * Remove GCSCopy * Remove success logline * drone yaml cleanup * Add artifacts-editions flag * Fix starlark * Add default sting slice in artifacts packages command
113 lines
3.2 KiB
Go
113 lines
3.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/grafana/grafana/pkg/build/env"
|
|
"github.com/grafana/grafana/pkg/build/gcloud"
|
|
"github.com/grafana/grafana/pkg/build/gcloud/storage"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// PublishArtifactsAction Action implements the sub-command "publish-artifacts".
|
|
func PublishArtifactsAction(c *cli.Context) error {
|
|
if c.NArg() > 0 {
|
|
if err := cli.ShowSubcommandHelp(c); err != nil {
|
|
return cli.Exit(err.Error(), 1)
|
|
}
|
|
return cli.Exit("", 1)
|
|
}
|
|
|
|
security := c.Bool("security")
|
|
var securityDestBucket, enterprise2SecurityPrefix string
|
|
|
|
artifactsEditions, err := env.RequireListWithEnvFallback(c, "artifacts-editions", "ARTIFACTS_EDITIONS")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if security {
|
|
securityDestBucket, err = env.RequireStringWithEnvFallback(c, "security-dest-bucket", "SECURITY_DEST_BUCKET")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
enterprise2SecurityPrefix, err = env.RequireStringWithEnvFallback(c, "enterprise2-security-prefix", "ENTERPRISE2_SECURITY_PREFIX")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if err := gcloud.ActivateServiceAccount(); err != nil {
|
|
return fmt.Errorf("error connecting to gcp, %q", err)
|
|
}
|
|
|
|
cfg := publishConfig{
|
|
srcBucket: c.String("src-bucket"),
|
|
destBucket: c.String("dest-bucket"),
|
|
enterprise2DestBucket: c.String("enterprise2-dest-bucket"),
|
|
enterprise2SecurityPrefix: enterprise2SecurityPrefix,
|
|
security: security,
|
|
tag: strings.TrimPrefix(c.String("tag"), "v"),
|
|
}
|
|
|
|
if cfg.security {
|
|
cfg.destBucket = securityDestBucket
|
|
}
|
|
|
|
gcs, err := storage.New()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, edition := range artifactsEditions {
|
|
switch edition {
|
|
case "oss", "enterprise":
|
|
err = copyArtifacts(c, gcs, cfg, edition)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
case "enterprise2":
|
|
err = copyEnterprise2Artifacts(c, gcs, cfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
default:
|
|
log.Printf("unrecognised artifacts edition: %s\n", edition)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func copyArtifacts(c *cli.Context, gcs *storage.Client, cfg publishConfig, edition string) error {
|
|
bucket := gcs.Bucket(cfg.destBucket)
|
|
destURL := edition
|
|
if !cfg.security {
|
|
destURL = filepath.Join(destURL, "release")
|
|
}
|
|
log.Printf("Copying downloads for %s, from %s bucket to %s bucket", edition, cfg.srcBucket, destURL)
|
|
if err := gcs.CopyRemoteDir(c.Context, gcs.Bucket(cfg.srcBucket), fmt.Sprintf("artifacts/downloads/v%s/%s/release", cfg.tag, edition), bucket, destURL); err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Printf("Successfully copied downloads.")
|
|
return nil
|
|
}
|
|
|
|
func copyEnterprise2Artifacts(c *cli.Context, gcs *storage.Client, cfg publishConfig) error {
|
|
bucket := gcs.Bucket(cfg.enterprise2DestBucket)
|
|
var prefix string
|
|
if cfg.security {
|
|
prefix = cfg.enterprise2SecurityPrefix
|
|
}
|
|
destURL := fmt.Sprintf("enterprise2/%srelease", prefix)
|
|
log.Printf("Copying downloads for enterprise2, from %s bucket to %s bucket", cfg.srcBucket, destURL)
|
|
if err := gcs.CopyRemoteDir(c.Context, gcs.Bucket(cfg.srcBucket), fmt.Sprintf("artifacts/downloads-enterprise2/v%s/enterprise2/release", cfg.tag), bucket, destURL); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|