diff --git a/cmd/actions/up.go b/cmd/actions/up.go index 78d4ae9..59401d0 100644 --- a/cmd/actions/up.go +++ b/cmd/actions/up.go @@ -2,10 +2,13 @@ package actions import ( "fmt" + "os/user" + "strings" "github.com/spf13/cobra" "github.com/foomo/squadron" + "github.com/foomo/squadron/util" ) func init() { @@ -73,8 +76,20 @@ func up(args []string, cwd, namespace string, build, push, diff bool, files []st return err } + username := "unknown" + if value, err := util.NewCommand("git").Args("config", "user.name").Run(); err == nil { + username = strings.TrimSpace(value) + } else if value, err := user.Current(); err == nil { + username = strings.TrimSpace(value.Name) + } + + commit := "" + if value, err := util.NewCommand("git").Args("rev-parse", "--short", "HEAD").Run(); err == nil { + commit = strings.TrimSpace(value) + } + if !diff { - return sq.Up(units, helmArgs) + return sq.Up(units, helmArgs, username, version, commit) } else if out, err := sq.Diff(units, helmArgs); err != nil { return err } else { diff --git a/go.mod b/go.mod index 4f6bcaf..516693f 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/sirupsen/logrus v1.8.1 github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b k8s.io/api v0.22.2 diff --git a/go.sum b/go.sum index 2686f73..2d07fb8 100644 --- a/go.sum +++ b/go.sum @@ -199,6 +199,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -226,7 +228,6 @@ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -635,8 +636,9 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= diff --git a/squadron.go b/squadron.go index c236121..cc5b032 100644 --- a/squadron.go +++ b/squadron.go @@ -326,13 +326,18 @@ func (sq *Squadron) Status(units map[string]*Unit, helmArgs []string) error { return nil } -func (sq *Squadron) Up(units map[string]*Unit, helmArgs []string) error { +func (sq *Squadron) Up(units map[string]*Unit, helmArgs []string, username, version, commit string) error { + description := fmt.Sprintf("\nManaged-By: Squadron %s\nDeployed-By: %s\nGit-Commit: %s", version, username, commit) + if sq.c.Unite { logrus.Infof("running helm upgrade for chart: %s", sq.chartPath()) _, err := util.NewHelmCommand(). Stdout(os.Stdout). - Args("upgrade", sq.name, sq.chartPath(), "--install"). + Args("upgrade", sq.name, sq.chartPath()). Args("--namespace", sq.namespace). + Args("--dependency-update"). + Args("--description", description). + Args("--install"). Args(helmArgs...). Run() return err @@ -340,25 +345,28 @@ func (sq *Squadron) Up(units map[string]*Unit, helmArgs []string) error { for uName, u := range units { // todo use release prefix on install: squadron name or --name rName := fmt.Sprintf("%s-%s", sq.name, uName) - logrus.Infof( - "running helm dependency update for %s in %s", - uName, - strings.TrimPrefix(u.Chart.Repository, "file://"), - ) - if strings.Contains(u.Chart.Repository, "file://") { - if _, err := util.NewHelmCommand(). - Args("dependency", "update"). - Cwd(strings.TrimPrefix(u.Chart.Repository, "file://")). - Stdout(os.Stdout). - Run(); err != nil { - return err - } - } + //logrus.Infof( + // "running helm dependency update for %s in %s", + // uName, + // strings.TrimPrefix(u.Chart.Repository, "file://"), + //) + //if strings.Contains(u.Chart.Repository, "file://") { + // if _, err := util.NewHelmCommand(). + // Args("dependency", "update"). + // Cwd(strings.TrimPrefix(u.Chart.Repository, "file://")). + // Stdout(os.Stdout). + // Run(); err != nil { + // return err + // } + //} logrus.Infof("running helm upgrade for %s", uName) cmd := util.NewHelmCommand(). Stdout(os.Stdout). Args("upgrade", rName, "--install"). + Args("--description", description). Args("--namespace", sq.namespace). + Args("--dependency-update"). + Args("--install"). Args("-f", path.Join(sq.chartPath(), uName+".yaml")). Args(helmArgs...) if strings.Contains(u.Chart.Repository, "file://") {