mirror of
https://github.com/foomo/squadron.git
synced 2025-10-16 12:35:42 +00:00
remove logger passed as dependency, small Cmd refactor
This commit is contained in:
parent
edad11ed7e
commit
aa07735b74
2
.gitignore
vendored
2
.gitignore
vendored
@ -121,7 +121,7 @@ modules.xml
|
||||
.history
|
||||
|
||||
.todo
|
||||
.output
|
||||
.squadron
|
||||
|
||||
bin
|
||||
|
||||
|
||||
32
build.go
32
build.go
@ -3,10 +3,10 @@ package squadron
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
||||
"github.com/foomo/squadron/util"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type Build struct {
|
||||
@ -29,30 +29,32 @@ type Build struct {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
func (b *Build) Exists() (bool, error) {
|
||||
return util.NewDockerCommand(logrus.NewEntry(logrus.StandardLogger())).ImageExists(b.Image, b.Tag)
|
||||
logrus.Infof("checking image exists for %s:%s", b.Image, b.Tag)
|
||||
return util.NewDockerCommand().ImageExists(b.Image, b.Tag)
|
||||
}
|
||||
|
||||
// Build ...
|
||||
func (b *Build) Build() error {
|
||||
cmd := util.NewDockerCommand(logrus.NewEntry(logrus.StandardLogger()))
|
||||
cmd.Option("-t", fmt.Sprintf("%s:%s", b.Image, b.Tag))
|
||||
cmd.Option("--file", b.Dockerfile)
|
||||
cmd.ListOption("--build-arg", b.Args)
|
||||
cmd.ListOption("--label", b.Labels)
|
||||
cmd.ListOption("--cache-from", b.CacheFrom)
|
||||
cmd.Option("--network", b.Network)
|
||||
cmd.Option("--target", b.Target)
|
||||
cmd.Option("--shm-size", b.ShmSize)
|
||||
cmd.ListOption("--add-host", b.ExtraHosts)
|
||||
cmd.Option("--isolation", b.Isolation)
|
||||
logrus.Infof("running docker build for %q", b.Context)
|
||||
cmd := util.NewDockerCommand()
|
||||
cmd.Args("-t", fmt.Sprintf("%s:%s", b.Image, b.Tag)).
|
||||
Args("--file", b.Dockerfile).
|
||||
ListArg("--build-arg", b.Args).
|
||||
ListArg("--label", b.Labels).
|
||||
ListArg("--cache-from", b.CacheFrom).
|
||||
Args("--network", b.Network).
|
||||
Args("--target", b.Target).
|
||||
Args("--shm-size", b.ShmSize).
|
||||
ListArg("--add-host", b.ExtraHosts).
|
||||
Args("--isolation", b.Isolation)
|
||||
_, err := cmd.Build(b.Context)
|
||||
return err
|
||||
}
|
||||
|
||||
// Push ...
|
||||
func (b *Build) Push() error {
|
||||
cmd := util.NewDockerCommand(logrus.NewEntry(logrus.StandardLogger()))
|
||||
_, err := cmd.Push(b.Image, b.Tag)
|
||||
logrus.Infof("running docker push for %s:%s", b.Image, b.Tag)
|
||||
_, err := util.NewDockerCommand().Push(b.Image, b.Tag)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -18,13 +17,13 @@ var (
|
||||
Example: " squadron build frontend backend",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return build(log, args, cwd, flagFiles, flagPush)
|
||||
return build(args, cwd, flagFiles, flagPush)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func build(l *logrus.Entry, args []string, cwd string, files []string, push bool) error {
|
||||
sq, err := squadron.New(l, cwd, "", files)
|
||||
func build(args []string, cwd string, files []string, push bool) error {
|
||||
sq, err := squadron.New(cwd, "", files)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package actions
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -16,13 +15,13 @@ var (
|
||||
Example: " squadron config --file squadron.yaml --file squadron.override.yaml",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return config(log, cwd, flagFiles)
|
||||
return config(cwd, flagFiles)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func config(l *logrus.Entry, cwd string, files []string) error {
|
||||
sq, err := squadron.New(l, cwd, "", files)
|
||||
func config(cwd string, files []string) error {
|
||||
sq, err := squadron.New(cwd, "", files)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -18,13 +17,13 @@ var (
|
||||
Example: " squadron down --namespace demo",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return down(log, args, cwd, flagNamespace)
|
||||
return down(args, cwd, flagNamespace)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func down(l *logrus.Entry, args []string, cwd, namespace string) error {
|
||||
sq, err := squadron.New(l, cwd, namespace, nil)
|
||||
func down(args []string, cwd, namespace string) error {
|
||||
sq, err := squadron.New(cwd, namespace, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -14,13 +13,13 @@ var (
|
||||
Example: " squadron generate fronted backend",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return generate(log, cwd, flagFiles)
|
||||
return generate(cwd, flagFiles)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func generate(l *logrus.Entry, cwd string, files []string) error {
|
||||
sq, err := squadron.New(l, cwd, "", files)
|
||||
func generate(cwd string, files []string) error {
|
||||
sq, err := squadron.New(cwd, "", files)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -16,7 +16,10 @@ var (
|
||||
rootCmd = &cobra.Command{
|
||||
Use: "squadron",
|
||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
log = newLogger(flagVerbose)
|
||||
logrus.SetLevel(logrus.InfoLevel)
|
||||
if flagVerbose {
|
||||
logrus.SetLevel(logrus.TraceLevel)
|
||||
}
|
||||
var err error
|
||||
if cmd.Name() == "help" || cmd.Name() == "init" || cmd.Name() == "version" {
|
||||
return nil
|
||||
@ -29,7 +32,6 @@ var (
|
||||
},
|
||||
}
|
||||
|
||||
log *logrus.Entry
|
||||
cwd string
|
||||
flagVerbose bool
|
||||
flagNamespace string
|
||||
@ -46,20 +48,11 @@ func init() {
|
||||
}
|
||||
|
||||
func Execute() {
|
||||
log := logrus.New()
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
log.Fatal(err)
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func newLogger(verbose bool) *logrus.Entry {
|
||||
logger := logrus.New()
|
||||
if verbose {
|
||||
logger.SetLevel(logrus.TraceLevel)
|
||||
}
|
||||
return logrus.NewEntry(logger)
|
||||
}
|
||||
|
||||
// parseExtraArgs ...
|
||||
func parseExtraArgs(args []string) (out []string, extraArgs []string) {
|
||||
for i, arg := range args {
|
||||
|
||||
@ -3,7 +3,6 @@ package actions
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -20,13 +19,13 @@ var (
|
||||
Example: " squadron template",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return template(log, args, cwd, flagNamespace, flagFiles)
|
||||
return template(args, cwd, flagNamespace, flagFiles)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func template(l *logrus.Entry, args []string, cwd, namespace string, files []string) error {
|
||||
sq, err := squadron.New(l, cwd, namespace, files)
|
||||
func template(args []string, cwd, namespace string, files []string) error {
|
||||
sq, err := squadron.New(cwd, namespace, files)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
@ -20,13 +19,13 @@ var (
|
||||
Example: " squadron up frontend backend --namespace demo --build --push -- --dry-run",
|
||||
Args: cobra.MinimumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return up(log, args, cwd, flagNamespace, flagBuild, flagPush, flagFiles)
|
||||
return up(args, cwd, flagNamespace, flagBuild, flagPush, flagFiles)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func up(l *logrus.Entry, args []string, cwd, namespace string, build, push bool, files []string) error {
|
||||
sq, err := squadron.New(l, cwd, namespace, files)
|
||||
func up(args []string, cwd, namespace string, build, push bool, files []string) error {
|
||||
sq, err := squadron.New(cwd, namespace, files)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
61
squadron.go
61
squadron.go
@ -6,10 +6,10 @@ import (
|
||||
"path"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
||||
"github.com/foomo/squadron/util"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -32,13 +32,11 @@ type Squadron struct {
|
||||
name string
|
||||
basePath string
|
||||
namespace string
|
||||
l *logrus.Entry
|
||||
c Configuration
|
||||
}
|
||||
|
||||
func New(l *logrus.Entry, basePath, namespace string, files []string) (*Squadron, error) {
|
||||
func New(basePath, namespace string, files []string) (*Squadron, error) {
|
||||
sq := Squadron{
|
||||
l: l,
|
||||
basePath: basePath,
|
||||
namespace: namespace,
|
||||
c: Configuration{},
|
||||
@ -69,59 +67,44 @@ func (sq Squadron) GetConfigYAML() ([]byte, error) {
|
||||
}
|
||||
|
||||
func (sq Squadron) Generate(units map[string]Unit) error {
|
||||
// cleanup old files
|
||||
logrus.Infof("recreating chart output dir %q", sq.chartPath())
|
||||
if err := sq.cleanupOutput(sq.chartPath()); err != nil {
|
||||
return err
|
||||
}
|
||||
// generate Chart.yaml and values.yaml
|
||||
logrus.Infof("generating chart %q files in %q", sq.name, sq.chartPath())
|
||||
if err := sq.generateChart(units, sq.chartPath(), sq.name, sq.c.Version); err != nil {
|
||||
return err
|
||||
}
|
||||
// run helm dependency upgrade
|
||||
cmd := util.NewHelmCommand(sq.l)
|
||||
_, err := cmd.UpdateDependency(sq.name, sq.chartPath())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
logrus.Infof("running helm dependency update for chart: %v", sq.chartPath())
|
||||
_, err := util.NewHelmCommand().UpdateDependency(sq.name, sq.chartPath())
|
||||
return err
|
||||
}
|
||||
|
||||
func (sq Squadron) Package() error {
|
||||
cmd := util.NewHelmCommand(sq.l)
|
||||
_, err := cmd.Package(sq.name, sq.chartPath(), sq.basePath)
|
||||
logrus.Infof("running helm package for chart: %v", sq.chartPath())
|
||||
_, err := util.NewHelmCommand().Package(sq.name, sq.chartPath(), sq.basePath)
|
||||
return err
|
||||
}
|
||||
|
||||
func (sq Squadron) Down(helmArgs []string) error {
|
||||
cmd := util.NewHelmCommand(sq.l)
|
||||
cmd.Args("uninstall", sq.name)
|
||||
cmd.Args("--namespace", sq.namespace)
|
||||
// use extra args
|
||||
cmd.Args(helmArgs...)
|
||||
// run
|
||||
_, err := cmd.Run()
|
||||
logrus.Infof("running helm uninstall for chart: %v", sq.chartPath())
|
||||
_, err := util.NewHelmCommand().Args("uninstall", sq.name).
|
||||
Args("--namespace", sq.namespace).Args(helmArgs...).Run()
|
||||
return err
|
||||
}
|
||||
|
||||
func (sq Squadron) Up(helmArgs []string) error {
|
||||
cmd := util.NewHelmCommand(sq.l)
|
||||
cmd.Args("upgrade", sq.name, sq.chartPath(), "--install")
|
||||
cmd.Args("--namespace", sq.namespace)
|
||||
// use extra args
|
||||
cmd.Args(helmArgs...)
|
||||
// run
|
||||
_, err := cmd.Run()
|
||||
logrus.Infof("running helm install for chart: %v", sq.chartPath())
|
||||
_, err := util.NewHelmCommand().
|
||||
Args("upgrade", sq.name, sq.chartPath(), "--install").
|
||||
Args("--namespace", sq.namespace).Args(helmArgs...).Run()
|
||||
return err
|
||||
}
|
||||
|
||||
func (sq Squadron) Template(helmArgs []string) (string, error) {
|
||||
cmd := util.NewHelmCommand(sq.l)
|
||||
cmd.Args("template", sq.name, sq.chartPath())
|
||||
cmd.Args("--namespace", sq.namespace)
|
||||
// use extra args
|
||||
cmd.Args(helmArgs...)
|
||||
// run
|
||||
return cmd.Run()
|
||||
logrus.Infof("running helm template for chart: %v", sq.chartPath())
|
||||
return util.NewHelmCommand().Args("template", sq.name, sq.chartPath()).
|
||||
Args("--namespace", sq.namespace).Args(helmArgs...).Run()
|
||||
}
|
||||
|
||||
func (sq Squadron) chartPath() string {
|
||||
@ -130,13 +113,10 @@ func (sq Squadron) chartPath() string {
|
||||
|
||||
func (sq Squadron) cleanupOutput(chartPath string) error {
|
||||
if _, err := os.Stat(chartPath); err == nil {
|
||||
sq.l.Infof("removing dir: %q", chartPath)
|
||||
if err := os.RemoveAll(chartPath); err != nil {
|
||||
sq.l.Warnf("could not delete chart output directory: %q", err)
|
||||
logrus.Warnf("could not delete chart output directory: %q", err)
|
||||
}
|
||||
}
|
||||
|
||||
sq.l.Printf("creating dir: %q", chartPath)
|
||||
if _, err := os.Stat(chartPath); os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(chartPath, 0744); err != nil {
|
||||
return fmt.Errorf("could not create chart output directory: %w", err)
|
||||
@ -146,7 +126,6 @@ func (sq Squadron) cleanupOutput(chartPath string) error {
|
||||
}
|
||||
|
||||
func (sq Squadron) generateChart(units map[string]Unit, chartPath, chartName, version string) error {
|
||||
sq.l.Printf("generating chart %q files in %q", chartName, chartPath)
|
||||
chart := newChart(chartName, version)
|
||||
values := map[string]interface{}{}
|
||||
if sq.GetGlobal() != nil {
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
name: test
|
||||
version: "1.0"
|
||||
prefix: storefinder # optional
|
||||
squadron:
|
||||
nats:
|
||||
chart:
|
||||
name: nats
|
||||
version: 0.7.5
|
||||
repository: https://nats-io.github.io/k8s/helm/charts/
|
||||
values:
|
||||
foo:
|
||||
{{ print .PWD "/example/squadron/charts/example/Chart.yaml" | yaml | indent 8 }}
|
||||
nameOverride: nats
|
||||
natsbox:
|
||||
enabled: false
|
||||
frontend:
|
||||
chart: "{{ .PWD }}/example/squadron/charts/example"
|
||||
builds:
|
||||
buildFirst:
|
||||
image: registry.your-company.com/path/to/image
|
||||
tag: {{ env "TAG" | base64 }}
|
||||
context: "{{ .PWD }}/example/squadron/application/"
|
||||
values:
|
||||
image: "{{ .Squadron.frontend.builds.buildFirst.image }}:{{ .Squadron.frontend.builds.buildFirst.tag }}"
|
||||
service:
|
||||
ports:
|
||||
- {{ default .Squadron.frontend.builds.buildFirst "isolation" 80 }}
|
||||
|
||||
|
||||
# squadron up -n storefinder storefinder = helm upgrage --install --create-namespace -n storefinder storefinder
|
||||
# squadron down -n storefinder storefinder = helm uninstall storefinder -n storefinder
|
||||
# squadron up -n storefinder storefinder storefinder-frontend --push
|
||||
|
||||
# squadron build ..
|
||||
|
||||
# squadron generate .. --tgz
|
||||
|
||||
# (squadron init ..)
|
||||
|
||||
# squadron config {-f (merging optional)} -> prints out the config
|
||||
|
||||
# squadron version
|
||||
# squadron help
|
||||
@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/foomo/squadron"
|
||||
"github.com/foomo/squadron/tests/utils"
|
||||
testutils "github.com/foomo/squadron/tests/utils"
|
||||
"github.com/foomo/squadron/util"
|
||||
)
|
||||
|
||||
@ -51,7 +51,7 @@ func testConfigSnapshot(t *testing.T, configs []string, snapshot string) {
|
||||
var cwd string
|
||||
testutils.Must(t, util.ValidatePath(".", &cwd))
|
||||
|
||||
sq, err := squadron.New(testutils.Log(), cwd, "", configs)
|
||||
sq, err := squadron.New(cwd, "", configs)
|
||||
testutils.Must(t, err, "failed to init squadron")
|
||||
|
||||
cf, err := sq.GetConfigYAML()
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
package testutils
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/sirupsen/logrus/hooks/test"
|
||||
)
|
||||
|
||||
func Log() *logrus.Entry {
|
||||
testLogger, _ := test.NewNullLogger()
|
||||
return logrus.NewEntry(testLogger)
|
||||
}
|
||||
17
util/cmd.go
17
util/cmd.go
@ -11,7 +11,6 @@ import (
|
||||
)
|
||||
|
||||
type Cmd struct {
|
||||
l *logrus.Entry
|
||||
// cmd *exec.Cmd
|
||||
command []string
|
||||
cwd string
|
||||
@ -26,9 +25,8 @@ type Cmd struct {
|
||||
postEndFunc func() error
|
||||
}
|
||||
|
||||
func NewCommand(l *logrus.Entry, name string) *Cmd {
|
||||
func NewCommand(name string) *Cmd {
|
||||
return &Cmd{
|
||||
l: l,
|
||||
command: []string{name},
|
||||
wait: true,
|
||||
env: os.Environ(),
|
||||
@ -49,6 +47,13 @@ func (c *Cmd) Args(args ...string) *Cmd {
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *Cmd) ListArg(name string, v []string) *Cmd {
|
||||
for _, i := range v {
|
||||
c.command = append(c.command, name, i)
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *Cmd) Cwd(path string) *Cmd {
|
||||
c.cwd = path
|
||||
return c
|
||||
@ -111,11 +116,11 @@ func (c *Cmd) Run() (string, error) {
|
||||
if c.cwd != "" {
|
||||
cmd.Dir = c.cwd
|
||||
}
|
||||
c.l.Tracef("executing %q", cmd.String())
|
||||
logrus.Tracef("executing %q", cmd.String())
|
||||
|
||||
combinedBuf := new(bytes.Buffer)
|
||||
traceWriter := c.l.WriterLevel(logrus.TraceLevel)
|
||||
warnWriter := c.l.WriterLevel(logrus.WarnLevel)
|
||||
traceWriter := logrus.New().WriterLevel(logrus.TraceLevel)
|
||||
warnWriter := logrus.New().WriterLevel(logrus.WarnLevel)
|
||||
|
||||
c.stdoutWriters = append(c.stdoutWriters, combinedBuf, traceWriter)
|
||||
c.stderrWriters = append(c.stderrWriters, combinedBuf, warnWriter)
|
||||
|
||||
@ -2,8 +2,6 @@ package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type DockerCmd struct {
|
||||
@ -11,37 +9,19 @@ type DockerCmd struct {
|
||||
Options []string
|
||||
}
|
||||
|
||||
func NewDockerCommand(l *logrus.Entry) *DockerCmd {
|
||||
return &DockerCmd{*NewCommand(l, "docker"), []string{}}
|
||||
}
|
||||
|
||||
func (c *DockerCmd) Option(name, v string) *Cmd {
|
||||
if v == "" {
|
||||
return &c.Cmd
|
||||
}
|
||||
c.Options = append(c.Options, name, v)
|
||||
return &c.Cmd
|
||||
}
|
||||
|
||||
func (c *DockerCmd) ListOption(name string, v []string) *Cmd {
|
||||
for _, i := range v {
|
||||
c.Options = append(c.Options, name, i)
|
||||
}
|
||||
return &c.Cmd
|
||||
func NewDockerCommand() *DockerCmd {
|
||||
return &DockerCmd{*NewCommand("docker"), []string{}}
|
||||
}
|
||||
|
||||
func (c *DockerCmd) Build(workDir string) (string, error) {
|
||||
c.l.Infof("Running docker build for %q", workDir)
|
||||
return c.Cwd(workDir).Args("build", ".").Args(c.Options...).Run()
|
||||
}
|
||||
|
||||
func (c *DockerCmd) Push(image, tag string, options ...string) (string, error) {
|
||||
c.l.Infof("Running docker push for %s:%s", image, tag)
|
||||
return c.Args("push", fmt.Sprintf("%s:%s", image, tag)).Args(options...).Run()
|
||||
}
|
||||
|
||||
func (c *DockerCmd) ImageExists(image, tag string) (bool, error) {
|
||||
c.l.Infof("Checking image exists for %s:%s", image, tag)
|
||||
ret, err := c.Args("images", "--quiet", fmt.Sprintf("%s:%s", image, tag)).Run()
|
||||
return ret != "", err
|
||||
}
|
||||
|
||||
@ -3,16 +3,14 @@ package util
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type GoCmd struct {
|
||||
Cmd
|
||||
}
|
||||
|
||||
func NewGoCommand(l *logrus.Entry) *GoCmd {
|
||||
return &GoCmd{*NewCommand(l, "go")}
|
||||
func NewGoCommand() *GoCmd {
|
||||
return &GoCmd{*NewCommand("go")}
|
||||
}
|
||||
|
||||
func (c GoCmd) Build(workDir, output, input string, flags ...string) *Cmd {
|
||||
|
||||
@ -1,21 +1,17 @@
|
||||
package util
|
||||
|
||||
import "github.com/sirupsen/logrus"
|
||||
|
||||
type HelmCmd struct {
|
||||
Cmd
|
||||
}
|
||||
|
||||
func NewHelmCommand(l *logrus.Entry) *HelmCmd {
|
||||
return &HelmCmd{*NewCommand(l, "helm")}
|
||||
func NewHelmCommand() *HelmCmd {
|
||||
return &HelmCmd{*NewCommand("helm")}
|
||||
}
|
||||
|
||||
func (c HelmCmd) UpdateDependency(chart, chartPath string) (string, error) {
|
||||
c.l.Infof("Running helm dependency update for chart: %v", chart)
|
||||
return c.Base().Args("dependency", "update", chartPath).Run()
|
||||
}
|
||||
|
||||
func (c HelmCmd) Package(chart, chartPath, destPath string) (string, error) {
|
||||
c.l.Infof("Running helm package for chart: %v", chart)
|
||||
return c.Base().Args("package", chartPath, "--destination", destPath).Run()
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
v1 "k8s.io/api/apps/v1"
|
||||
)
|
||||
|
||||
@ -14,8 +13,8 @@ type KubeCmd struct {
|
||||
Cmd
|
||||
}
|
||||
|
||||
func NewKubeCommand(l *logrus.Entry) *KubeCmd {
|
||||
return &KubeCmd{*NewCommand(l, "kubectl")}
|
||||
func NewKubeCommand() *KubeCmd {
|
||||
return &KubeCmd{*NewCommand("kubectl")}
|
||||
}
|
||||
|
||||
func (c KubeCmd) RollbackDeployment(deployment string) *Cmd {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user