Merge branch 'master' into help-by-default
This commit is contained in:
@@ -4,8 +4,11 @@ import (
|
||||
"fmt"
|
||||
"github.com/kelseyhightower/envconfig"
|
||||
"io"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var justNumbers = regexp.MustCompile(`^\d+$`)
|
||||
|
||||
// The Config struct captures the `settings` and `environment` blocks in the application's drone
|
||||
// config. Configuration in drone's `settings` block arrives as uppercase env vars matching the
|
||||
// config key, prefixed with `PLUGIN_`. Config from the `environment` block is uppercased, but does
|
||||
@@ -62,6 +65,10 @@ func NewConfig(stdout, stderr io.Writer) (*Config, error) {
|
||||
}
|
||||
}
|
||||
|
||||
if justNumbers.MatchString(cfg.Timeout) {
|
||||
cfg.Timeout = fmt.Sprintf("%ss", cfg.Timeout)
|
||||
}
|
||||
|
||||
if cfg.Debug && cfg.Stderr != nil {
|
||||
cfg.logDebug()
|
||||
}
|
||||
|
||||
@@ -106,6 +106,13 @@ func (suite *ConfigTestSuite) TestNewConfigWithConflictingVariables() {
|
||||
suite.Equal("2m30s", cfg.Timeout)
|
||||
}
|
||||
|
||||
func (suite *ConfigTestSuite) TestNewConfigInfersNumbersAreSeconds() {
|
||||
suite.setenv("PLUGIN_TIMEOUT", "42")
|
||||
cfg, err := NewConfig(&strings.Builder{}, &strings.Builder{})
|
||||
suite.Require().NoError(err)
|
||||
suite.Equal("42s", cfg.Timeout)
|
||||
}
|
||||
|
||||
func (suite *ConfigTestSuite) TestNewConfigSetsWriters() {
|
||||
stdout := &strings.Builder{}
|
||||
stderr := &strings.Builder{}
|
||||
|
||||
@@ -69,7 +69,6 @@ func determineSteps(cfg Config) *func(Config) []Step {
|
||||
return &help
|
||||
default:
|
||||
switch cfg.DroneEvent {
|
||||
// Note: These events are documented in docs/upgrade_settings.yml. Any changes here should be reflected there.
|
||||
case "push", "tag", "deployment", "pull_request", "promote", "rollback":
|
||||
return &upgrade
|
||||
case "delete":
|
||||
@@ -97,7 +96,9 @@ func (p *Plan) Execute() error {
|
||||
|
||||
var upgrade = func(cfg Config) []Step {
|
||||
steps := initKube(cfg)
|
||||
|
||||
if cfg.UpdateDependencies {
|
||||
steps = append(steps, depUpdate(cfg)...)
|
||||
}
|
||||
steps = append(steps, &run.Upgrade{
|
||||
Chart: cfg.Chart,
|
||||
Release: cfg.Release,
|
||||
@@ -114,6 +115,9 @@ var upgrade = func(cfg Config) []Step {
|
||||
|
||||
var uninstall = func(cfg Config) []Step {
|
||||
steps := initKube(cfg)
|
||||
if cfg.UpdateDependencies {
|
||||
steps = append(steps, depUpdate(cfg)...)
|
||||
}
|
||||
steps = append(steps, &run.Uninstall{
|
||||
Release: cfg.Release,
|
||||
DryRun: cfg.DryRun,
|
||||
@@ -123,11 +127,15 @@ var uninstall = func(cfg Config) []Step {
|
||||
}
|
||||
|
||||
var lint = func(cfg Config) []Step {
|
||||
lint := &run.Lint{
|
||||
Chart: cfg.Chart,
|
||||
steps := make([]Step, 0)
|
||||
if cfg.UpdateDependencies {
|
||||
steps = append(steps, depUpdate(cfg)...)
|
||||
}
|
||||
steps = append(steps, &run.Lint{
|
||||
Chart: cfg.Chart,
|
||||
})
|
||||
|
||||
return []Step{lint}
|
||||
return steps
|
||||
}
|
||||
|
||||
var help = func(cfg Config) []Step {
|
||||
@@ -150,3 +158,11 @@ func initKube(cfg Config) []Step {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func depUpdate(cfg Config) []Step {
|
||||
return []Step{
|
||||
&run.DepUpdate{
|
||||
Chart: cfg.Chart,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +167,17 @@ func (suite *PlanTestSuite) TestUpgrade() {
|
||||
suite.Equal(expected, upgrade)
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestDel() {
|
||||
func (suite *PlanTestSuite) TestUpgradeWithUpdateDependencies() {
|
||||
cfg := Config{
|
||||
UpdateDependencies: true,
|
||||
}
|
||||
steps := upgrade(cfg)
|
||||
suite.Require().Equal(3, len(steps), "upgrade should have a third step when DepUpdate is true")
|
||||
suite.IsType(&run.InitKube{}, steps[0])
|
||||
suite.IsType(&run.DepUpdate{}, steps[1])
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestUninstall() {
|
||||
cfg := Config{
|
||||
KubeToken: "b2YgbXkgYWZmZWN0aW9u",
|
||||
SkipTLSVerify: true,
|
||||
@@ -205,6 +215,16 @@ func (suite *PlanTestSuite) TestDel() {
|
||||
suite.Equal(expected, actual)
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestUninstallWithUpdateDependencies() {
|
||||
cfg := Config{
|
||||
UpdateDependencies: true,
|
||||
}
|
||||
steps := uninstall(cfg)
|
||||
suite.Require().Equal(3, len(steps), "uninstall should have a third step when DepUpdate is true")
|
||||
suite.IsType(&run.InitKube{}, steps[0])
|
||||
suite.IsType(&run.DepUpdate{}, steps[1])
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestInitKube() {
|
||||
cfg := Config{
|
||||
KubeToken: "cXVlZXIgY2hhcmFjdGVyCg==",
|
||||
@@ -231,6 +251,23 @@ func (suite *PlanTestSuite) TestInitKube() {
|
||||
suite.Equal(expected, init)
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestDepUpdate() {
|
||||
cfg := Config{
|
||||
UpdateDependencies: true,
|
||||
Chart: "scatterplot",
|
||||
}
|
||||
|
||||
steps := depUpdate(cfg)
|
||||
suite.Require().Equal(1, len(steps), "depUpdate should return one step")
|
||||
suite.Require().IsType(&run.DepUpdate{}, steps[0])
|
||||
update, _ := steps[0].(*run.DepUpdate)
|
||||
|
||||
expected := &run.DepUpdate{
|
||||
Chart: "scatterplot",
|
||||
}
|
||||
suite.Equal(expected, update)
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestLint() {
|
||||
cfg := Config{
|
||||
Chart: "./flow",
|
||||
@@ -245,6 +282,15 @@ func (suite *PlanTestSuite) TestLint() {
|
||||
suite.Equal(want, steps[0])
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestLintWithUpdateDependencies() {
|
||||
cfg := Config{
|
||||
UpdateDependencies: true,
|
||||
}
|
||||
steps := lint(cfg)
|
||||
suite.Require().Equal(2, len(steps), "lint should have a second step when DepUpdate is true")
|
||||
suite.IsType(&run.DepUpdate{}, steps[0])
|
||||
}
|
||||
|
||||
func (suite *PlanTestSuite) TestDeterminePlanUpgradeCommand() {
|
||||
cfg := Config{
|
||||
Command: "upgrade",
|
||||
|
||||
Reference in New Issue
Block a user