diff --git a/pkg/build/cmd/uploadpackages.go b/pkg/build/cmd/uploadpackages.go index 3270948ae66..22a76ac6439 100644 --- a/pkg/build/cmd/uploadpackages.go +++ b/pkg/build/cmd/uploadpackages.go @@ -144,7 +144,7 @@ func getVersionFolder(cfg uploadConfig, event string) (string, error) { return releaseFolder, nil case config.MainMode, config.DownstreamMode: return mainFolder, nil - case config.ReleaseBranchMode: + case config.ReleaseBranchMode, config.CloudMode: return releaseBranchFolder, nil default: // Corner case for custom enterprise2 mode diff --git a/pkg/build/config/version.go b/pkg/build/config/version.go index aaeeaf56652..de37c608ca1 100644 --- a/pkg/build/config/version.go +++ b/pkg/build/config/version.go @@ -123,6 +123,7 @@ func CheckDroneTargetBranch() (VersionMode, error) { func CheckSemverSuffix() (ReleaseMode, error) { reBetaRls := regexp.MustCompile(`beta.*`) reTestRls := regexp.MustCompile(`test.*`) + reCloudRls := regexp.MustCompile(`cloud.*`) 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...") @@ -133,6 +134,8 @@ func CheckSemverSuffix() (ReleaseMode, error) { return ReleaseMode{Mode: TagMode, IsBeta: true}, nil case reTestRls.MatchString(tagSuffix): return ReleaseMode{Mode: TagMode, IsTest: true}, nil + case reCloudRls.MatchString(tagSuffix): + return ReleaseMode{Mode: CloudMode}, nil default: fmt.Printf("DRONE_SEMVER_PRERELEASE is custom string, release event with %s suffix\n", tagSuffix) return ReleaseMode{Mode: TagMode}, nil diff --git a/pkg/build/config/version_mode.go b/pkg/build/config/version_mode.go index a74b5b5f49e..d7734bb7d01 100644 --- a/pkg/build/config/version_mode.go +++ b/pkg/build/config/version_mode.go @@ -11,6 +11,7 @@ const ( DownstreamMode VersionMode = "downstream" Enterprise2Mode VersionMode = "enterprise2" CronjobMode VersionMode = "cron" + CloudMode VersionMode = "cloud" ) const ( diff --git a/pkg/build/config/versions.go b/pkg/build/config/versions.go index 1dde38e647c..c7f5959ec02 100644 --- a/pkg/build/config/versions.go +++ b/pkg/build/config/versions.go @@ -204,4 +204,31 @@ var Versions = VersionMap{ StorybookSrcDir: "artifacts/storybook", }, }, + CloudMode: { + Variants: []Variant{ + VariantLinuxAmd64Musl, + }, + PluginSignature: PluginSignature{ + Sign: true, + AdminSign: true, + }, + Docker: Docker{ + ShouldSave: true, + Architectures: []Architecture{ + ArchAMD64, + }, + Distribution: []Distribution{ + Alpine, + }, + PrereleaseBucket: "grafana-prerelease/artifacts/docker", + }, + Buckets: Buckets{ + Artifacts: "grafana-prerelease/artifacts/downloads", + ArtifactsEnterprise2: "grafana-prerelease/artifacts/downloads-enterprise2", + CDNAssets: "grafana-prerelease", + CDNAssetsDir: "artifacts/static-assets", + Storybook: "grafana-prerelease", + StorybookSrcDir: "artifacts/storybook", + }, + }, } diff --git a/pkg/build/packaging/grafana.go b/pkg/build/packaging/grafana.go index 4500f72f569..c88bc176688 100644 --- a/pkg/build/packaging/grafana.go +++ b/pkg/build/packaging/grafana.go @@ -184,30 +184,32 @@ func signRPMPackages(edition config.Edition, cfg config.Config, grafanaDir strin return err } - rpmArgs := append([]string{"--addsign"}, rpms...) - log.Printf("Invoking rpm with args: %+v", rpmArgs) - //nolint:gosec - cmd := exec.Command("rpm", rpmArgs...) - if output, err := cmd.CombinedOutput(); err != nil { - return fmt.Errorf("failed to sign RPM packages: %s", output) - } - if err := os.Remove(cfg.GPGPassPath); err != nil { - return fmt.Errorf("failed to remove %q: %w", cfg.GPGPassPath, err) - } - - log.Printf("Verifying %s RPM packages...", edition) - // The output changed between rpm versions - reOutput := regexp.MustCompile("(?:digests signatures OK)|(?:pgp.+OK)") - for _, p := range rpms { + if len(rpms) > 0 { + rpmArgs := append([]string{"--addsign"}, rpms...) + log.Printf("Invoking rpm with args: %+v", rpmArgs) //nolint:gosec - cmd := exec.Command("rpm", "-K", p) - output, err := cmd.CombinedOutput() - if err != nil { - return fmt.Errorf("failed to verify RPM signature: %w", err) + cmd := exec.Command("rpm", rpmArgs...) + if output, err := cmd.CombinedOutput(); err != nil { + return fmt.Errorf("failed to sign RPM packages: %s", output) + } + if err := os.Remove(cfg.GPGPassPath); err != nil { + return fmt.Errorf("failed to remove %q: %w", cfg.GPGPassPath, err) } - if !reOutput.Match(output) { - return fmt.Errorf("RPM package %q not verified: %s", p, output) + log.Printf("Verifying %s RPM packages...", edition) + // The output changed between rpm versions + reOutput := regexp.MustCompile("(?:digests signatures OK)|(?:pgp.+OK)") + for _, p := range rpms { + //nolint:gosec + cmd := exec.Command("rpm", "-K", p) + output, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("failed to verify RPM signature: %w", err) + } + + if !reOutput.Match(output) { + return fmt.Errorf("RPM package %q not verified: %s", p, output) + } } }