From 1058090a24c54a8c3267174748c064cf7d86a841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Thu, 10 Sep 2020 16:30:03 +0200 Subject: [PATCH] Add support for rc versions in upgrader (#15424) --- services/upgrader/upgrader_linux.go | 8 ++++- services/upgrader/upgrader_linux_test.go | 41 ++++++++++++++++++++---- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/services/upgrader/upgrader_linux.go b/services/upgrader/upgrader_linux.go index 83b1e814b5..48fe24d569 100644 --- a/services/upgrader/upgrader_linux.go +++ b/services/upgrader/upgrader_linux.go @@ -16,6 +16,7 @@ import ( "path" "runtime" "strconv" + "strings" "sync/atomic" "syscall" @@ -69,7 +70,12 @@ func (wc *writeCounter) Write(p []byte) (int, error) { } func getCurrentVersionTgzUrl() string { - return "https://releases.mattermost.com/" + model.CurrentVersion + "/mattermost-" + model.CurrentVersion + "-linux-amd64.tar.gz" + version := model.CurrentVersion + if strings.HasPrefix(model.BuildNumber, version+"-rc") { + version = model.BuildNumber + } + + return "https://releases.mattermost.com/" + version + "/mattermost-" + version + "-linux-amd64.tar.gz" } func verifySignature(filename string, sigfilename string, publicKey string) error { diff --git a/services/upgrader/upgrader_linux_test.go b/services/upgrader/upgrader_linux_test.go index 6f428b205f..1498d5eab5 100644 --- a/services/upgrader/upgrader_linux_test.go +++ b/services/upgrader/upgrader_linux_test.go @@ -35,12 +35,41 @@ func TestCanIUpgradeToE0(t *testing.T) { } func TestGetCurrentVersionTgzUrl(t *testing.T) { - currentVersion := model.CurrentVersion - model.CurrentVersion = "5.22.0" - defer func() { - model.CurrentVersion = currentVersion - }() - require.Equal(t, "https://releases.mattermost.com/5.22.0/mattermost-5.22.0-linux-amd64.tar.gz", getCurrentVersionTgzUrl()) + t.Run("get release version in regular version", func(t *testing.T) { + currentVersion := model.CurrentVersion + buildNumber := model.CurrentVersion + model.CurrentVersion = "5.22.0" + model.BuildNumber = "5.22.0" + defer func() { + model.CurrentVersion = currentVersion + model.BuildNumber = buildNumber + }() + require.Equal(t, "https://releases.mattermost.com/5.22.0/mattermost-5.22.0-linux-amd64.tar.gz", getCurrentVersionTgzUrl()) + }) + + t.Run("get release version in dev version", func(t *testing.T) { + currentVersion := model.CurrentVersion + buildNumber := model.CurrentVersion + model.CurrentVersion = "5.22.0" + model.BuildNumber = "5.22.0-dev" + defer func() { + model.CurrentVersion = currentVersion + model.BuildNumber = buildNumber + }() + require.Equal(t, "https://releases.mattermost.com/5.22.0/mattermost-5.22.0-linux-amd64.tar.gz", getCurrentVersionTgzUrl()) + }) + + t.Run("get release version in rc version", func(t *testing.T) { + currentVersion := model.CurrentVersion + buildNumber := model.CurrentVersion + model.CurrentVersion = "5.22.0" + model.BuildNumber = "5.22.0-rc2" + defer func() { + model.CurrentVersion = currentVersion + model.BuildNumber = buildNumber + }() + require.Equal(t, "https://releases.mattermost.com/5.22.0-rc2/mattermost-5.22.0-rc2-linux-amd64.tar.gz", getCurrentVersionTgzUrl()) + }) } func TestExtractBinary(t *testing.T) {