Commit 1d9f47b6 by Arve Knudsen Committed by GitHub

release_publisher: Fix Debian/RPM naming (#25276)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
parent f98e176d
...@@ -28,11 +28,12 @@ func (re releaseFromExternalContent) prepareRelease(baseArchiveURL, whatsNewURL ...@@ -28,11 +28,12 @@ func (re releaseFromExternalContent) prepareRelease(baseArchiveURL, whatsNewURL
builds := []build{} builds := []build{}
for _, ba := range re.artifactConfigurations { for _, ba := range re.artifactConfigurations {
sha256, err := re.getter.getContents(fmt.Sprintf("%s.sha256", ba.getURL(baseArchiveURL, version, rt))) url := ba.getURL(baseArchiveURL, version, rt)
sha256, err := re.getter.getContents(fmt.Sprintf("%s.sha256", url))
if err != nil { if err != nil {
return nil, err return nil, err
} }
builds = append(builds, newBuild(baseArchiveURL, ba, version, rt, sha256)) builds = append(builds, newBuild(url, ba, sha256))
} }
r := release{ r := release{
......
...@@ -44,7 +44,6 @@ func main() { ...@@ -44,7 +44,6 @@ func main() {
if enterprise { if enterprise {
product = "grafana-enterprise" product = "grafana-enterprise"
baseURL = createBaseURL(archiveProviderRoot, "enterprise", product, nightly) baseURL = createBaseURL(archiveProviderRoot, "enterprise", product, nightly)
} else { } else {
product = "grafana" product = "grafana"
baseURL = createBaseURL(archiveProviderRoot, "oss", product, nightly) baseURL = createBaseURL(archiveProviderRoot, "oss", product, nightly)
......
...@@ -93,17 +93,32 @@ type buildArtifact struct { ...@@ -93,17 +93,32 @@ type buildArtifact struct {
func (t buildArtifact) getURL(baseArchiveURL, version string, releaseType releaseType) string { func (t buildArtifact) getURL(baseArchiveURL, version string, releaseType releaseType) string {
prefix := "-" prefix := "-"
rhelReleaseExtra := "" rev := ""
if t.os == "deb" { if t.os == "deb" {
prefix = "_" prefix = "_"
} }
if releaseType.stable() && t.os == "rhel" { if t.os == "rhel" {
rhelReleaseExtra = "-1" rev = "-1"
} }
url := strings.Join([]string{baseArchiveURL, t.packagePostfix, prefix, version, rhelReleaseExtra, t.urlPostfix}, "") verComponents := strings.Split(version, "-")
if len(verComponents) > 2 {
panic(fmt.Sprintf("Version string contains more than one hyphen: %q", version))
}
switch t.os {
case "deb", "rhel":
if len(verComponents) > 1 {
// With Debian and RPM packages, it's customary to prefix any pre-release component with a ~, since this
// is considered of lower lexical value than the empty character, and this way pre-release versions are
// considered to be of a lower version than the final version (which lacks this suffix).
version = fmt.Sprintf("%s~%s", verComponents[0], verComponents[1])
}
}
url := fmt.Sprintf("%s%s%s%s%s%s", baseArchiveURL, t.packagePostfix, prefix, version, rev, t.urlPostfix)
return url return url
} }
...@@ -217,10 +232,10 @@ func filterBuildArtifacts(filterFrom []buildArtifact, ft filterType, filters []a ...@@ -217,10 +232,10 @@ func filterBuildArtifacts(filterFrom []buildArtifact, ft filterType, filters []a
return artifacts, nil return artifacts, nil
} }
func newBuild(baseArchiveURL string, ba buildArtifact, version string, rt releaseType, sha256 string) build { func newBuild(url string, ba buildArtifact, sha256 string) build {
return build{ return build{
Os: ba.os, Os: ba.os,
URL: ba.getURL(baseArchiveURL, version, rt), URL: url,
Sha256: sha256, Sha256: sha256,
Arch: ba.arch, Arch: ba.arch,
} }
......
...@@ -3,6 +3,9 @@ package main ...@@ -3,6 +3,9 @@ package main
import ( import (
"reflect" "reflect"
"testing" "testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestPreparingReleaseFromRemote(t *testing.T) { func TestPreparingReleaseFromRemote(t *testing.T) {
...@@ -59,7 +62,7 @@ func TestPreparingReleaseFromRemote(t *testing.T) { ...@@ -59,7 +62,7 @@ func TestPreparingReleaseFromRemote(t *testing.T) {
expectedStable: false, expectedStable: false,
expectedArch: "amd64", expectedArch: "amd64",
expectedOs: "rhel", expectedOs: "rhel",
expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.4.0-pre1asdf.x86_64.rpm", expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.4.0~pre1asdf-1.x86_64.rpm",
baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana", baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm", ""}}, buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm", ""}},
}, },
...@@ -72,10 +75,12 @@ func TestPreparingReleaseFromRemote(t *testing.T) { ...@@ -72,10 +75,12 @@ func TestPreparingReleaseFromRemote(t *testing.T) {
expectedBeta: false, expectedBeta: false,
expectedStable: false, expectedStable: false,
expectedArch: "armv6", expectedArch: "armv6",
expectedOs: "linux", expectedOs: "deb",
expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-rpi-5.4.0-pre1asdf_armhf.deb", expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-rpi_5.4.0~pre1asdf_armhf.deb",
baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana", baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
buildArtifacts: []buildArtifact{{"linux", "armv6", "_armhf.deb", "-rpi"}}, buildArtifacts: []buildArtifact{
{os: "deb", arch: "armv6", urlPostfix: "_armhf.deb", packagePostfix: "-rpi"},
},
}, },
{ {
version: "v5.4.0-pre1asdf", version: "v5.4.0-pre1asdf",
...@@ -114,33 +119,20 @@ func TestPreparingReleaseFromRemote(t *testing.T) { ...@@ -114,33 +119,20 @@ func TestPreparingReleaseFromRemote(t *testing.T) {
artifactConfigurations: test.buildArtifacts, artifactConfigurations: test.buildArtifacts,
} }
rel, _ := builder.prepareRelease(test.baseArchiveURL, test.whatsNewURL, test.relNotesURL, test.nightly) t.Log("Preparing release", "baseArchiveURL", test.baseArchiveURL, "nightly", test.nightly)
rel, err := builder.prepareRelease(test.baseArchiveURL, test.whatsNewURL, test.relNotesURL, test.nightly)
if rel.Beta != test.expectedBeta || rel.Stable != test.expectedStable { require.NoError(t, err)
t.Errorf("%s should have been tagged as beta=%v, stable=%v.", test.version, test.expectedBeta, test.expectedStable)
}
if rel.Version != test.expectedVersion { assert.Equal(t, test.expectedBeta, rel.Beta)
t.Errorf("Expected version to be %s, but it was %s.", test.expectedVersion, rel.Version) assert.Equal(t, test.expectedStable, rel.Stable)
} assert.Equal(t, test.expectedVersion, rel.Version)
expectedBuilds := len(test.buildArtifacts) assert.Len(t, rel.Builds, len(test.buildArtifacts))
if len(rel.Builds) != expectedBuilds {
t.Errorf("Expected %v builds, but got %v.", expectedBuilds, len(rel.Builds))
}
build := rel.Builds[0] build := rel.Builds[0]
if build.Arch != test.expectedArch { assert.Equal(t, test.expectedArch, build.Arch)
t.Errorf("Expected arch to be %v, but it was %v", test.expectedArch, build.Arch) assert.Equal(t, test.expectedOs, build.Os)
} assert.Equal(t, test.expectedURL, build.URL)
if build.Os != test.expectedOs {
t.Errorf("Expected os to be %v, but it was %v", test.expectedOs, build.Os)
}
if build.URL != test.expectedURL {
t.Errorf("Expected url to be %v, but it was %v", test.expectedURL, build.URL)
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment