Merge branch 'master' into help-by-default

This commit is contained in:
Joachim Hill-Grannec
2019-12-28 09:31:04 -07:00
committed by GitHub
17 changed files with 426 additions and 11 deletions

View File

@@ -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()
}

View File

@@ -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{}

View File

@@ -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,
},
}
}

View File

@@ -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",