Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7533ed95ad | ||
|
|
98bb4e4ba4 | ||
|
|
e07eb1399b | ||
|
|
9a9987eeb2 | ||
|
|
fed0a769f2 | ||
|
|
48473bd9d8 | ||
|
|
64045fadfb | ||
|
|
c5a7551da8 | ||
|
|
eeccfdd143 | ||
|
|
8d450bbf7d | ||
|
|
a566ea0cf7 | ||
|
|
24f10ce1b9 | ||
|
|
7c033a8b0a | ||
|
|
e482a144c1 | ||
|
|
8dba329407 | ||
|
|
4462307983 | ||
|
|
1809d7b133 | ||
|
|
70b2a2d0b4 |
@@ -2,6 +2,9 @@ kind: pipeline
|
|||||||
type: docker
|
type: docker
|
||||||
name: default
|
name: default
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: test
|
- name: test
|
||||||
@@ -16,7 +19,7 @@ steps:
|
|||||||
- name: build
|
- name: build
|
||||||
image: golang:1.13
|
image: golang:1.13
|
||||||
commands:
|
commands:
|
||||||
- go build -o build/drone-helm cmd/drone-helm/main.go
|
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/drone-helm cmd/drone-helm/main.go
|
||||||
- name: publish_linux_amd64
|
- name: publish_linux_amd64
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
FROM alpine/helm:3.1.1
|
FROM alpine/helm:3.8.1
|
||||||
MAINTAINER Erin Call <erin@liffft.com>
|
MAINTAINER Joachim Hill-Grannec <joachim@pelo.tech>
|
||||||
|
|
||||||
COPY build/drone-helm /bin/drone-helm
|
COPY build/drone-helm /bin/drone-helm
|
||||||
COPY assets/kubeconfig.tpl /root/.kube/config.tpl
|
COPY assets/kubeconfig.tpl /root/.kube/config.tpl
|
||||||
|
|||||||
@@ -44,11 +44,14 @@ Installations are triggered when the `mode` setting is "upgrade." They can also
|
|||||||
| force_upgrade | boolean | | force | Pass `--force` to `helm upgrade`. |
|
| force_upgrade | boolean | | force | Pass `--force` to `helm upgrade`. |
|
||||||
| atomic_upgrade | boolean | | | Pass `--atomic` to `helm upgrade`. |
|
| atomic_upgrade | boolean | | | Pass `--atomic` to `helm upgrade`. |
|
||||||
| cleanup_failed_upgrade | boolean | | | Pass `--cleanup-on-fail` to `helm upgrade`. |
|
| cleanup_failed_upgrade | boolean | | | Pass `--cleanup-on-fail` to `helm upgrade`. |
|
||||||
|
| history_max | int | | | Pass `--history-max` to `helm upgrade`. |
|
||||||
| values | list\<string\> | | | Chart values to use as the `--set` argument to `helm upgrade`. |
|
| values | list\<string\> | | | Chart values to use as the `--set` argument to `helm upgrade`. |
|
||||||
| string_values | list\<string\> | | | Chart values to use as the `--set-string` argument to `helm upgrade`. |
|
| string_values | list\<string\> | | | Chart values to use as the `--set-string` argument to `helm upgrade`. |
|
||||||
| values_files | list\<string\> | | | Values to use as `--values` arguments to `helm upgrade`. |
|
| values_files | list\<string\> | | | Values to use as `--values` arguments to `helm upgrade`. |
|
||||||
| reuse_values | boolean | | | Reuse the values from a previous release. |
|
| reuse_values | boolean | | | Reuse the values from a previous release. |
|
||||||
| skip_tls_verify | boolean | | | Connect to the Kubernetes cluster without checking for a valid TLS certificate. Not recommended in production. This is ignored if `skip_kubeconfig` is `true`. |
|
| skip_tls_verify | boolean | | | Connect to the Kubernetes cluster without checking for a valid TLS certificate. Not recommended in production. This is ignored if `skip_kubeconfig` is `true`. |
|
||||||
|
| create_namespace | boolean | | | Pass --create-namespace to `helm upgrade`. |
|
||||||
|
| skip_crds | boolean | | | Pass --skip-crds to `helm upgrade`. |
|
||||||
|
|
||||||
## Uninstallation
|
## Uninstallation
|
||||||
|
|
||||||
|
|||||||
10
internal/env/config.go
vendored
10
internal/env/config.go
vendored
@@ -10,6 +10,10 @@ import (
|
|||||||
"github.com/kelseyhightower/envconfig"
|
"github.com/kelseyhightower/envconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultHistoryMax = 10
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
justNumbers = regexp.MustCompile(`^\d+$`)
|
justNumbers = regexp.MustCompile(`^\d+$`)
|
||||||
deprecatedVars = []string{"PURGE", "RECREATE_PODS", "TILLER_NS", "UPGRADE", "CANARY_IMAGE", "CLIENT_ONLY", "STABLE_REPO_URL"}
|
deprecatedVars = []string{"PURGE", "RECREATE_PODS", "TILLER_NS", "UPGRADE", "CANARY_IMAGE", "CLIENT_ONLY", "STABLE_REPO_URL"}
|
||||||
@@ -33,6 +37,7 @@ type Config struct {
|
|||||||
StringValues string `split_words:"true"` // Argument to pass to --set-string in applicable helm commands
|
StringValues string `split_words:"true"` // Argument to pass to --set-string in applicable helm commands
|
||||||
ValuesFiles []string `split_words:"true"` // Arguments to pass to --values in applicable helm commands
|
ValuesFiles []string `split_words:"true"` // Arguments to pass to --values in applicable helm commands
|
||||||
Namespace string `` // Kubernetes namespace for all helm commands
|
Namespace string `` // Kubernetes namespace for all helm commands
|
||||||
|
CreateNamespace bool `split_words:"true"` // Pass --create-namespace to `helm upgrade`
|
||||||
KubeToken string `split_words:"true"` // Kubernetes authentication token to put in .kube/config
|
KubeToken string `split_words:"true"` // Kubernetes authentication token to put in .kube/config
|
||||||
SkipKubeconfig bool `envconfig:"skip_kubeconfig"` // Skip kubeconfig creation
|
SkipKubeconfig bool `envconfig:"skip_kubeconfig"` // Skip kubeconfig creation
|
||||||
SkipTLSVerify bool `envconfig:"skip_tls_verify"` // Put insecure-skip-tls-verify in .kube/config
|
SkipTLSVerify bool `envconfig:"skip_tls_verify"` // Put insecure-skip-tls-verify in .kube/config
|
||||||
@@ -44,6 +49,7 @@ type Config struct {
|
|||||||
Wait bool `envconfig:"wait_for_upgrade"` // Pass --wait to applicable helm commands
|
Wait bool `envconfig:"wait_for_upgrade"` // Pass --wait to applicable helm commands
|
||||||
ReuseValues bool `split_words:"true"` // Pass --reuse-values to `helm upgrade`
|
ReuseValues bool `split_words:"true"` // Pass --reuse-values to `helm upgrade`
|
||||||
KeepHistory bool `split_words:"true"` // Pass --keep-history to `helm uninstall`
|
KeepHistory bool `split_words:"true"` // Pass --keep-history to `helm uninstall`
|
||||||
|
HistoryMax int `split_words:"true"` // Pass --history-max option
|
||||||
Timeout string `` // Argument to pass to --timeout in applicable helm commands
|
Timeout string `` // Argument to pass to --timeout in applicable helm commands
|
||||||
Chart string `` // Chart argument to use in applicable helm commands
|
Chart string `` // Chart argument to use in applicable helm commands
|
||||||
Release string `` // Release argument to use in applicable helm commands
|
Release string `` // Release argument to use in applicable helm commands
|
||||||
@@ -51,6 +57,7 @@ type Config struct {
|
|||||||
AtomicUpgrade bool `split_words:"true"` // Pass --atomic to `helm upgrade`
|
AtomicUpgrade bool `split_words:"true"` // Pass --atomic to `helm upgrade`
|
||||||
CleanupOnFail bool `envconfig:"cleanup_failed_upgrade"` // Pass --cleanup-on-fail to `helm upgrade`
|
CleanupOnFail bool `envconfig:"cleanup_failed_upgrade"` // Pass --cleanup-on-fail to `helm upgrade`
|
||||||
LintStrictly bool `split_words:"true"` // Pass --strict to `helm lint`
|
LintStrictly bool `split_words:"true"` // Pass --strict to `helm lint`
|
||||||
|
SkipCrds bool `split_words:"true"` // Pass --skip-crds to `helm upgrade`
|
||||||
|
|
||||||
Stdout io.Writer `ignored:"true"`
|
Stdout io.Writer `ignored:"true"`
|
||||||
Stderr io.Writer `ignored:"true"`
|
Stderr io.Writer `ignored:"true"`
|
||||||
@@ -77,6 +84,9 @@ func NewConfig(stdout, stderr io.Writer) (*Config, error) {
|
|||||||
KubeToken: aliases.KubeToken,
|
KubeToken: aliases.KubeToken,
|
||||||
Certificate: aliases.Certificate,
|
Certificate: aliases.Certificate,
|
||||||
|
|
||||||
|
// set to same default as helm CLI
|
||||||
|
HistoryMax: defaultHistoryMax,
|
||||||
|
|
||||||
Stdout: stdout,
|
Stdout: stdout,
|
||||||
Stderr: stderr,
|
Stderr: stderr,
|
||||||
}
|
}
|
||||||
|
|||||||
9
internal/env/config_test.go
vendored
9
internal/env/config_test.go
vendored
@@ -217,6 +217,15 @@ func (suite *ConfigTestSuite) TestValuesSecretsWithDebugLogging() {
|
|||||||
suite.Contains(stderr.String(), `$SECRET_WATER not present in environment, replaced with ""`)
|
suite.Contains(stderr.String(), `$SECRET_WATER not present in environment, replaced with ""`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *ConfigTestSuite) TestHistoryMax() {
|
||||||
|
conf := NewTestConfig(suite.T())
|
||||||
|
suite.Assert().Equal(10, conf.HistoryMax)
|
||||||
|
|
||||||
|
suite.setenv("PLUGIN_HISTORY_MAX", "0")
|
||||||
|
conf = NewTestConfig(suite.T())
|
||||||
|
suite.Assert().Equal(0, conf.HistoryMax)
|
||||||
|
}
|
||||||
|
|
||||||
func (suite *ConfigTestSuite) setenv(key, val string) {
|
func (suite *ConfigTestSuite) setenv(key, val string) {
|
||||||
orig, ok := os.LookupEnv(key)
|
orig, ok := os.LookupEnv(key)
|
||||||
if ok {
|
if ok {
|
||||||
|
|||||||
16
internal/env/testing.go
vendored
Normal file
16
internal/env/testing.go
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package env
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewTestConfig is a helper for setting up a Config object and error checking
|
||||||
|
func NewTestConfig(t *testing.T) *Config {
|
||||||
|
conf, err := NewConfig(os.Stdout, os.Stderr)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
return conf
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package run
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/pelotech/drone-helm3/internal/env"
|
"github.com/pelotech/drone-helm3/internal/env"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,7 +23,10 @@ type Upgrade struct {
|
|||||||
force bool
|
force bool
|
||||||
atomic bool
|
atomic bool
|
||||||
cleanupOnFail bool
|
cleanupOnFail bool
|
||||||
|
historyMax int
|
||||||
certs *repoCerts
|
certs *repoCerts
|
||||||
|
createNamespace bool
|
||||||
|
skipCrds bool
|
||||||
|
|
||||||
cmd cmd
|
cmd cmd
|
||||||
}
|
}
|
||||||
@@ -44,7 +48,10 @@ func NewUpgrade(cfg env.Config) *Upgrade {
|
|||||||
force: cfg.Force,
|
force: cfg.Force,
|
||||||
atomic: cfg.AtomicUpgrade,
|
atomic: cfg.AtomicUpgrade,
|
||||||
cleanupOnFail: cfg.CleanupOnFail,
|
cleanupOnFail: cfg.CleanupOnFail,
|
||||||
|
historyMax: cfg.HistoryMax,
|
||||||
certs: newRepoCerts(cfg),
|
certs: newRepoCerts(cfg),
|
||||||
|
createNamespace: cfg.CreateNamespace,
|
||||||
|
skipCrds: cfg.SkipCrds,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,11 +102,20 @@ func (u *Upgrade) Prepare() error {
|
|||||||
if u.stringValues != "" {
|
if u.stringValues != "" {
|
||||||
args = append(args, "--set-string", u.stringValues)
|
args = append(args, "--set-string", u.stringValues)
|
||||||
}
|
}
|
||||||
|
if u.createNamespace {
|
||||||
|
args = append(args, "--create-namespace")
|
||||||
|
}
|
||||||
|
if u.skipCrds {
|
||||||
|
args = append(args, "--skip-crds")
|
||||||
|
}
|
||||||
for _, vFile := range u.valuesFiles {
|
for _, vFile := range u.valuesFiles {
|
||||||
args = append(args, "--values", vFile)
|
args = append(args, "--values", vFile)
|
||||||
}
|
}
|
||||||
args = append(args, u.certs.flags()...)
|
args = append(args, u.certs.flags()...)
|
||||||
|
|
||||||
|
// always set --history-max since it defaults to non-zero value
|
||||||
|
args = append(args, fmt.Sprintf("--history-max=%d", u.historyMax))
|
||||||
|
|
||||||
args = append(args, u.release, u.chart)
|
args = append(args, u.release, u.chart)
|
||||||
u.cmd = command(helmBin, args...)
|
u.cmd = command(helmBin, args...)
|
||||||
u.cmd.Stdout(u.stdout)
|
u.cmd.Stdout(u.stdout)
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ package run
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
"github.com/pelotech/drone-helm3/internal/env"
|
"github.com/pelotech/drone-helm3/internal/env"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type UpgradeTestSuite struct {
|
type UpgradeTestSuite struct {
|
||||||
@@ -33,23 +34,23 @@ func TestUpgradeTestSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *UpgradeTestSuite) TestNewUpgrade() {
|
func (suite *UpgradeTestSuite) TestNewUpgrade() {
|
||||||
cfg := env.Config{
|
cfg := env.NewTestConfig(suite.T())
|
||||||
ChartVersion: "seventeen",
|
cfg.ChartVersion = "seventeen"
|
||||||
DryRun: true,
|
cfg.DryRun = true
|
||||||
Wait: true,
|
cfg.Wait = true
|
||||||
Values: "steadfastness,forthrightness",
|
cfg.Values = "steadfastness,forthrightness"
|
||||||
StringValues: "tensile_strength,flexibility",
|
cfg.StringValues = "tensile_strength,flexibility"
|
||||||
ValuesFiles: []string{"/root/price_inventory.yml"},
|
cfg.ValuesFiles = []string{"/root/price_inventory.yml"}
|
||||||
ReuseValues: true,
|
cfg.ReuseValues = true
|
||||||
Timeout: "go sit in the corner",
|
cfg.Timeout = "go sit in the corner"
|
||||||
Chart: "billboard_top_100",
|
cfg.Chart = "billboard_top_100"
|
||||||
Release: "post_malone_circles",
|
cfg.Release = "post_malone_circles"
|
||||||
Force: true,
|
cfg.Force = true
|
||||||
AtomicUpgrade: true,
|
cfg.AtomicUpgrade = true
|
||||||
CleanupOnFail: true,
|
cfg.CleanupOnFail = true
|
||||||
}
|
|
||||||
|
up := NewUpgrade(*cfg)
|
||||||
|
|
||||||
up := NewUpgrade(cfg)
|
|
||||||
suite.Equal(cfg.Chart, up.chart)
|
suite.Equal(cfg.Chart, up.chart)
|
||||||
suite.Equal(cfg.Release, up.release)
|
suite.Equal(cfg.Release, up.release)
|
||||||
suite.Equal(cfg.ChartVersion, up.chartVersion)
|
suite.Equal(cfg.ChartVersion, up.chartVersion)
|
||||||
@@ -70,15 +71,15 @@ func (suite *UpgradeTestSuite) TestNewUpgrade() {
|
|||||||
func (suite *UpgradeTestSuite) TestPrepareAndExecute() {
|
func (suite *UpgradeTestSuite) TestPrepareAndExecute() {
|
||||||
defer suite.ctrl.Finish()
|
defer suite.ctrl.Finish()
|
||||||
|
|
||||||
cfg := env.Config{
|
cfg := env.NewTestConfig(suite.T())
|
||||||
Chart: "at40",
|
cfg.Chart = "at40"
|
||||||
Release: "jonas_brothers_only_human",
|
cfg.Release = "jonas_brothers_only_human"
|
||||||
}
|
|
||||||
u := NewUpgrade(cfg)
|
u := NewUpgrade(*cfg)
|
||||||
|
|
||||||
command = func(path string, args ...string) cmd {
|
command = func(path string, args ...string) cmd {
|
||||||
suite.Equal(helmBin, path)
|
suite.Equal(helmBin, path)
|
||||||
suite.Equal([]string{"upgrade", "--install", "jonas_brothers_only_human", "at40"}, args)
|
suite.Equal([]string{"upgrade", "--install", "--history-max=10", "jonas_brothers_only_human", "at40"}, args)
|
||||||
|
|
||||||
return suite.mockCmd
|
return suite.mockCmd
|
||||||
}
|
}
|
||||||
@@ -99,16 +100,16 @@ func (suite *UpgradeTestSuite) TestPrepareAndExecute() {
|
|||||||
func (suite *UpgradeTestSuite) TestPrepareNamespaceFlag() {
|
func (suite *UpgradeTestSuite) TestPrepareNamespaceFlag() {
|
||||||
defer suite.ctrl.Finish()
|
defer suite.ctrl.Finish()
|
||||||
|
|
||||||
cfg := env.Config{
|
cfg := env.NewTestConfig(suite.T())
|
||||||
Namespace: "melt",
|
cfg.Namespace = "melt"
|
||||||
Chart: "at40",
|
cfg.Chart = "at40"
|
||||||
Release: "shaed_trampoline",
|
cfg.Release = "shaed_trampoline"
|
||||||
}
|
|
||||||
u := NewUpgrade(cfg)
|
u := NewUpgrade(*cfg)
|
||||||
|
|
||||||
command = func(path string, args ...string) cmd {
|
command = func(path string, args ...string) cmd {
|
||||||
suite.Equal(helmBin, path)
|
suite.Equal(helmBin, path)
|
||||||
suite.Equal([]string{"--namespace", "melt", "upgrade", "--install", "shaed_trampoline", "at40"}, args)
|
suite.Equal([]string{"--namespace", "melt", "upgrade", "--install", "--history-max=10", "shaed_trampoline", "at40"}, args)
|
||||||
|
|
||||||
return suite.mockCmd
|
return suite.mockCmd
|
||||||
}
|
}
|
||||||
@@ -123,22 +124,22 @@ func (suite *UpgradeTestSuite) TestPrepareNamespaceFlag() {
|
|||||||
func (suite *UpgradeTestSuite) TestPrepareWithUpgradeFlags() {
|
func (suite *UpgradeTestSuite) TestPrepareWithUpgradeFlags() {
|
||||||
defer suite.ctrl.Finish()
|
defer suite.ctrl.Finish()
|
||||||
|
|
||||||
cfg := env.Config{
|
cfg := env.NewTestConfig(suite.T())
|
||||||
Chart: "hot_ac",
|
cfg.Chart = "hot_ac"
|
||||||
Release: "maroon_5_memories",
|
cfg.Release = "maroon_5_memories"
|
||||||
ChartVersion: "radio_edit",
|
cfg.ChartVersion = "radio_edit"
|
||||||
DryRun: true,
|
cfg.DryRun = true
|
||||||
Wait: true,
|
cfg.Wait = true
|
||||||
Values: "age=35",
|
cfg.Values = "age=35"
|
||||||
StringValues: "height=5ft10in",
|
cfg.StringValues = "height=5ft10in"
|
||||||
ValuesFiles: []string{"/usr/local/stats", "/usr/local/grades"},
|
cfg.ValuesFiles = []string{"/usr/local/stats", "/usr/local/grades"}
|
||||||
ReuseValues: true,
|
cfg.ReuseValues = true
|
||||||
Timeout: "sit_in_the_corner",
|
cfg.Timeout = "sit_in_the_corner"
|
||||||
Force: true,
|
cfg.Force = true
|
||||||
AtomicUpgrade: true,
|
cfg.AtomicUpgrade = true
|
||||||
CleanupOnFail: true,
|
cfg.CleanupOnFail = true
|
||||||
}
|
|
||||||
u := NewUpgrade(cfg)
|
u := NewUpgrade(*cfg)
|
||||||
// inject a ca cert filename so repoCerts won't create any files that we'd have to clean up
|
// inject a ca cert filename so repoCerts won't create any files that we'd have to clean up
|
||||||
u.certs.caCertFilename = "local_ca.cert"
|
u.certs.caCertFilename = "local_ca.cert"
|
||||||
|
|
||||||
@@ -158,6 +159,7 @@ func (suite *UpgradeTestSuite) TestPrepareWithUpgradeFlags() {
|
|||||||
"--values", "/usr/local/stats",
|
"--values", "/usr/local/stats",
|
||||||
"--values", "/usr/local/grades",
|
"--values", "/usr/local/grades",
|
||||||
"--ca-file", "local_ca.cert",
|
"--ca-file", "local_ca.cert",
|
||||||
|
"--history-max=10",
|
||||||
"maroon_5_memories", "hot_ac"}, args)
|
"maroon_5_memories", "hot_ac"}, args)
|
||||||
|
|
||||||
return suite.mockCmd
|
return suite.mockCmd
|
||||||
@@ -191,14 +193,15 @@ func (suite *UpgradeTestSuite) TestRequiresChartAndRelease() {
|
|||||||
func (suite *UpgradeTestSuite) TestPrepareDebugFlag() {
|
func (suite *UpgradeTestSuite) TestPrepareDebugFlag() {
|
||||||
stdout := strings.Builder{}
|
stdout := strings.Builder{}
|
||||||
stderr := strings.Builder{}
|
stderr := strings.Builder{}
|
||||||
cfg := env.Config{
|
|
||||||
Chart: "at40",
|
cfg := env.NewTestConfig(suite.T())
|
||||||
Release: "lewis_capaldi_someone_you_loved",
|
cfg.Chart = "at40"
|
||||||
Debug: true,
|
cfg.Release = "lewis_capaldi_someone_you_loved"
|
||||||
Stdout: &stdout,
|
cfg.Debug = true
|
||||||
Stderr: &stderr,
|
cfg.Stdout = &stdout
|
||||||
}
|
cfg.Stderr = &stderr
|
||||||
u := NewUpgrade(cfg)
|
|
||||||
|
u := NewUpgrade(*cfg)
|
||||||
|
|
||||||
command = func(path string, args ...string) cmd {
|
command = func(path string, args ...string) cmd {
|
||||||
suite.mockCmd.EXPECT().
|
suite.mockCmd.EXPECT().
|
||||||
@@ -215,8 +218,34 @@ func (suite *UpgradeTestSuite) TestPrepareDebugFlag() {
|
|||||||
|
|
||||||
u.Prepare()
|
u.Prepare()
|
||||||
|
|
||||||
want := fmt.Sprintf("Generated command: '%s --debug upgrade "+
|
want := fmt.Sprintf(
|
||||||
"--install lewis_capaldi_someone_you_loved at40'\n", helmBin)
|
"Generated command: '%s --debug upgrade --install --history-max=10 lewis_capaldi_someone_you_loved at40'\n",
|
||||||
|
helmBin,
|
||||||
|
)
|
||||||
suite.Equal(want, stderr.String())
|
suite.Equal(want, stderr.String())
|
||||||
suite.Equal("", stdout.String())
|
suite.Equal("", stdout.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *UpgradeTestSuite) TestPrepareSkipCrdsFlag() {
|
||||||
|
defer suite.ctrl.Finish()
|
||||||
|
|
||||||
|
cfg := env.NewTestConfig(suite.T())
|
||||||
|
cfg.Chart = "at40"
|
||||||
|
cfg.Release = "cabbages_smell_great"
|
||||||
|
cfg.SkipCrds = true
|
||||||
|
|
||||||
|
u := NewUpgrade(*cfg)
|
||||||
|
|
||||||
|
command = func(path string, args ...string) cmd {
|
||||||
|
suite.Equal(helmBin, path)
|
||||||
|
suite.Equal([]string{"upgrade", "--install", "--skip-crds", "--history-max=10", "cabbages_smell_great", "at40"}, args)
|
||||||
|
|
||||||
|
return suite.mockCmd
|
||||||
|
}
|
||||||
|
|
||||||
|
suite.mockCmd.EXPECT().Stdout(gomock.Any())
|
||||||
|
suite.mockCmd.EXPECT().Stderr(gomock.Any())
|
||||||
|
|
||||||
|
err := u.Prepare()
|
||||||
|
suite.Require().Nil(err)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user