feat: show release notes on upgrade
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
43e68a99b0
commit
b4f48c3c59
|
@ -170,7 +170,7 @@ recipes.
|
||||||
}
|
}
|
||||||
|
|
||||||
if !internal.Force {
|
if !internal.Force {
|
||||||
if err := internal.NewVersionOverview(app, deployedVersion, chosenDowngrade); err != nil {
|
if err := internal.NewVersionOverview(app, deployedVersion, chosenDowngrade, ""); err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,6 +137,14 @@ recipes.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if release notes written after git tag published, read them before we
|
||||||
|
// check out the tag and then they'll appear to be missing. this covers
|
||||||
|
// when we obviously will forget to write release notes before publishing
|
||||||
|
releaseNotes, err := internal.GetReleaseNotes(app.Type, chosenUpgrade)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if !internal.Chaos {
|
if !internal.Chaos {
|
||||||
if err := recipe.EnsureVersion(app.Type, chosenUpgrade); err != nil {
|
if err := recipe.EnsureVersion(app.Type, chosenUpgrade); err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
|
@ -176,7 +184,7 @@ recipes.
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := internal.NewVersionOverview(app, deployedVersion, chosenUpgrade); err != nil {
|
if err := internal.NewVersionOverview(app, deployedVersion, chosenUpgrade, releaseNotes); err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@ package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"coopcloud.tech/abra/pkg/client"
|
"coopcloud.tech/abra/pkg/client"
|
||||||
|
@ -194,7 +197,7 @@ func DeployOverview(app config.App, version, message string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewVersionOverview shows an upgrade or downgrade overview
|
// NewVersionOverview shows an upgrade or downgrade overview
|
||||||
func NewVersionOverview(app config.App, currentVersion, newVersion string) error {
|
func NewVersionOverview(app config.App, currentVersion, newVersion, releaseNotes string) error {
|
||||||
tableCol := []string{"server", "compose", "domain", "app name", "current version", "to be deployed"}
|
tableCol := []string{"server", "compose", "domain", "app name", "current version", "to be deployed"}
|
||||||
table := formatter.CreateTable(tableCol)
|
table := formatter.CreateTable(tableCol)
|
||||||
|
|
||||||
|
@ -211,6 +214,21 @@ func NewVersionOverview(app config.App, currentVersion, newVersion string) error
|
||||||
table.Append([]string{server, deployConfig, app.Domain, app.StackName(), currentVersion, newVersion})
|
table.Append([]string{server, deployConfig, app.Domain, app.StackName(), currentVersion, newVersion})
|
||||||
table.Render()
|
table.Render()
|
||||||
|
|
||||||
|
if releaseNotes == "" {
|
||||||
|
var err error
|
||||||
|
releaseNotes, err = GetReleaseNotes(app.Type, newVersion)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if releaseNotes != "" {
|
||||||
|
fmt.Println()
|
||||||
|
fmt.Println(fmt.Sprintf("%s release notes:\n\n%s", newVersion, releaseNotes))
|
||||||
|
} else {
|
||||||
|
logrus.Warnf("no release notes available for %s", newVersion)
|
||||||
|
}
|
||||||
|
|
||||||
if NoInput {
|
if NoInput {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -230,3 +248,18 @@ func NewVersionOverview(app config.App, currentVersion, newVersion string) error
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetReleaseNotes prints release notes for a recipe version
|
||||||
|
func GetReleaseNotes(recipeName, version string) (string, error) {
|
||||||
|
fpath := path.Join(config.RECIPES_DIR, recipeName, "release", version)
|
||||||
|
|
||||||
|
if _, err := os.Stat(fpath); !os.IsNotExist(err) {
|
||||||
|
releaseNotes, err := ioutil.ReadFile(fpath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return string(releaseNotes), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue