Commit 8f0d3ff7 by Leonard Gram

build: fixes a bug where nightly rpm builds would be handled as stable.

parent 2d361eea
......@@ -16,10 +16,14 @@ type releaseFromExternalContent struct {
func (re releaseFromExternalContent) prepareRelease(baseArchiveUrl, whatsNewUrl string, releaseNotesUrl string, nightly bool) (*release, error) {
version := re.rawVersion[1:]
isBeta := strings.Contains(version, "beta")
beta := strings.Contains(version, "beta")
var rt ReleaseType
if isBeta {
if beta {
rt = BETA
} else if nightly {
rt = NIGHTLY
} else {
rt = STABLE
}
builds := []build{}
......@@ -34,9 +38,9 @@ func (re releaseFromExternalContent) prepareRelease(baseArchiveUrl, whatsNewUrl
r := release{
Version: version,
ReleaseDate: time.Now().UTC(),
Stable: !isBeta && !nightly,
Beta: isBeta,
Nightly: nightly,
Stable: rt.stable(),
Beta: rt.beta(),
Nightly: rt.nightly(),
WhatsNewUrl: whatsNewUrl,
ReleaseNotesUrl: releaseNotesUrl,
Builds: builds,
......
......@@ -18,6 +18,9 @@ type releaseLocalSources struct {
}
func (r releaseLocalSources) prepareRelease(baseArchiveUrl, whatsNewUrl string, releaseNotesUrl string, nightly bool) (*release, error) {
if !nightly {
return nil, errors.New("Local releases only supported for nightly builds.")
}
buildData := r.findBuilds(baseArchiveUrl)
rel := release{
......
......@@ -69,13 +69,25 @@ const (
NIGHTLY
)
func (rt ReleaseType) beta() bool {
return rt == BETA
}
func (rt ReleaseType) stable() bool {
return rt == STABLE
}
func (rt ReleaseType) nightly() bool {
return rt == NIGHTLY
}
type buildArtifact struct {
os string
arch string
urlPostfix string
}
func (t buildArtifact) getUrl(baseArchiveUrl, version string, rt ReleaseType) string {
func (t buildArtifact) getUrl(baseArchiveUrl, version string, releaseType ReleaseType) string {
prefix := "-"
rhelReleaseExtra := ""
......@@ -83,7 +95,7 @@ func (t buildArtifact) getUrl(baseArchiveUrl, version string, rt ReleaseType) st
prefix = "_"
}
if rt == BETA && t.os == "rhel" {
if releaseType == STABLE && t.os == "rhel" {
rhelReleaseExtra = "-1"
}
......
......@@ -5,23 +5,61 @@ import "testing"
func TestPreparingReleaseFromRemote(t *testing.T) {
cases := []struct {
version string
version string
expectedVersion string
whatsNewUrl string
relNotesUrl string
expectedArch string
expectedOs string
buildArtifacts []buildArtifact
whatsNewUrl string
relNotesUrl string
nightly bool
expectedBeta bool
expectedStable bool
expectedArch string
expectedOs string
expectedUrl string
baseArchiveUrl string
buildArtifacts []buildArtifact
}{
{
version: "v5.2.0-beta1",
expectedVersion: "5.2.0-beta1",
whatsNewUrl: "https://whatsnews.foo/",
relNotesUrl: "https://relnotes.foo/",
nightly: false,
expectedBeta: true,
expectedStable: false,
expectedArch: "amd64",
expectedOs: "linux",
expectedUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.0-beta1.linux-amd64.tar.gz",
baseArchiveUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
buildArtifacts: []buildArtifact{{"linux", "amd64", ".linux-amd64.tar.gz"}},
},
{
version: "v5.2.3",
expectedVersion: "5.2.3",
whatsNewUrl: "https://whatsnews.foo/",
relNotesUrl: "https://relnotes.foo/",
nightly: false,
expectedBeta: false,
expectedStable: true,
expectedArch: "amd64",
expectedOs: "rhel",
expectedUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3-1.x86_64.rpm",
baseArchiveUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm"}},
},
{
version: "v5.4.0-pre1asdf",
expectedVersion: "5.4.0-pre1asdf",
whatsNewUrl: "https://whatsnews.foo/",
relNotesUrl: "https://relnotes.foo/",
nightly: true,
expectedBeta: false,
expectedStable: false,
expectedArch: "amd64",
expectedOs: "rhel",
expectedUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.4.0-pre1asdf.x86_64.rpm",
baseArchiveUrl: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm"}},
},
}
for _, test := range cases {
......@@ -32,10 +70,10 @@ func TestPreparingReleaseFromRemote(t *testing.T) {
artifactConfigurations: test.buildArtifacts,
}
rel, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana", test.whatsNewUrl, test.relNotesUrl, false)
rel, _ := builder.prepareRelease(test.baseArchiveUrl, test.whatsNewUrl, test.relNotesUrl, test.nightly)
if !rel.Beta || rel.Stable {
t.Errorf("%s should have been tagged as beta (not stable), but wasn't .", test.version)
if rel.Beta != test.expectedBeta || rel.Stable != test.expectedStable {
t.Errorf("%s should have been tagged as beta=%v, stable=%v.", test.version, test.expectedBeta, test.expectedStable)
}
if rel.Version != test.expectedVersion {
......@@ -53,7 +91,11 @@ func TestPreparingReleaseFromRemote(t *testing.T) {
}
if build.Os != test.expectedOs {
t.Errorf("Expected arch to be %v, but it was %v", test.expectedOs, build.Os)
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)
}
}
}
......@@ -129,4 +171,9 @@ func TestPreparingReleaseFromLocal(t *testing.T) {
if build.Os != expectedOs {
t.Fatalf("Expected os to be %s, but was %s", expectedOs, build.Os)
}
_, err := builder.prepareRelease("", "", "", false)
if err == nil {
t.Error("Error was nil, but expected an error as the local releaser only supports nightly builds.")
}
}
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