feat: add devel flag support (#313)
Resolves #161 Changelog: * add support for devel flag * allow for explicit disable of the devel default
This commit is contained in:
parent
8f96f0aff5
commit
595c70f85b
1
main.go
1
main.go
|
|
@ -609,6 +609,7 @@ func findAndIterateOverDesiredStates(fileOrDir string, converge func(*state.Helm
|
||||||
if noTarget {
|
if noTarget {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
errs := converge(st, helm)
|
errs := converge(st, helm)
|
||||||
if err := clean(st, errs); err != nil {
|
if err := clean(st, errs); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,13 @@ import (
|
||||||
|
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
|
"os/exec"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"github.com/roboll/helmfile/environment"
|
"github.com/roboll/helmfile/environment"
|
||||||
"github.com/roboll/helmfile/valuesfile"
|
"github.com/roboll/helmfile/valuesfile"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
"os/exec"
|
|
||||||
"syscall"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// HelmState structure for the helmfile
|
// HelmState structure for the helmfile
|
||||||
|
|
@ -49,6 +50,8 @@ type HelmSpec struct {
|
||||||
TillerNamespace string `yaml:"tillerNamespace"`
|
TillerNamespace string `yaml:"tillerNamespace"`
|
||||||
Args []string `yaml:"args"`
|
Args []string `yaml:"args"`
|
||||||
Verify bool `yaml:"verify"`
|
Verify bool `yaml:"verify"`
|
||||||
|
// Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0'
|
||||||
|
Devel bool `yaml:"devel"`
|
||||||
// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
|
// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
|
||||||
Wait bool `yaml:"wait"`
|
Wait bool `yaml:"wait"`
|
||||||
// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
|
// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
|
||||||
|
|
@ -75,6 +78,8 @@ type ReleaseSpec struct {
|
||||||
Chart string `yaml:"chart"`
|
Chart string `yaml:"chart"`
|
||||||
Version string `yaml:"version"`
|
Version string `yaml:"version"`
|
||||||
Verify *bool `yaml:"verify"`
|
Verify *bool `yaml:"verify"`
|
||||||
|
// Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0'
|
||||||
|
Devel *bool `yaml:"devel"`
|
||||||
// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
|
// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
|
||||||
Wait *bool `yaml:"wait"`
|
Wait *bool `yaml:"wait"`
|
||||||
// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
|
// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
|
||||||
|
|
@ -798,6 +803,10 @@ func (state *HelmState) flagsForUpgrade(helm helmexec.Interface, release *Releas
|
||||||
flags = append(flags, "--version", release.Version)
|
flags = append(flags, "--version", release.Version)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if state.isDevelopment(release) {
|
||||||
|
flags = append(flags, "--devel")
|
||||||
|
}
|
||||||
|
|
||||||
if release.Verify != nil && *release.Verify || state.HelmDefaults.Verify {
|
if release.Verify != nil && *release.Verify || state.HelmDefaults.Verify {
|
||||||
flags = append(flags, "--verify")
|
flags = append(flags, "--verify")
|
||||||
}
|
}
|
||||||
|
|
@ -843,6 +852,11 @@ func (state *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSp
|
||||||
if release.Version != "" {
|
if release.Version != "" {
|
||||||
flags = append(flags, "--version", release.Version)
|
flags = append(flags, "--version", release.Version)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if state.isDevelopment(release) {
|
||||||
|
flags = append(flags, "--devel")
|
||||||
|
}
|
||||||
|
|
||||||
common, err := state.namespaceAndValuesFlags(helm, release)
|
common, err := state.namespaceAndValuesFlags(helm, release)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -850,6 +864,15 @@ func (state *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSp
|
||||||
return append(flags, common...), nil
|
return append(flags, common...), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (state *HelmState) isDevelopment(release *ReleaseSpec) bool {
|
||||||
|
result := state.HelmDefaults.Devel
|
||||||
|
if release.Devel != nil {
|
||||||
|
result = *release.Devel
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
func (state *HelmState) flagsForLint(helm helmexec.Interface, release *ReleaseSpec) ([]string, error) {
|
func (state *HelmState) flagsForLint(helm helmexec.Interface, release *ReleaseSpec) ([]string, error) {
|
||||||
return state.namespaceAndValuesFlags(helm, release)
|
return state.namespaceAndValuesFlags(helm, release)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,42 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||||
"--namespace", "test-namespace",
|
"--namespace", "test-namespace",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "devel",
|
||||||
|
defaults: HelmSpec{
|
||||||
|
Devel: true,
|
||||||
|
},
|
||||||
|
release: &ReleaseSpec{
|
||||||
|
Chart: "test/chart",
|
||||||
|
Version: "0.1",
|
||||||
|
Wait: &enable,
|
||||||
|
Name: "test-charts",
|
||||||
|
Namespace: "test-namespace",
|
||||||
|
},
|
||||||
|
want: []string{
|
||||||
|
"--version", "0.1",
|
||||||
|
"--devel",
|
||||||
|
"--wait",
|
||||||
|
"--namespace", "test-namespace",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "devel-release",
|
||||||
|
defaults: HelmSpec{
|
||||||
|
Devel: true,
|
||||||
|
},
|
||||||
|
release: &ReleaseSpec{
|
||||||
|
Chart: "test/chart",
|
||||||
|
Version: "0.1",
|
||||||
|
Devel: &disable,
|
||||||
|
Name: "test-charts",
|
||||||
|
Namespace: "test-namespace",
|
||||||
|
},
|
||||||
|
want: []string{
|
||||||
|
"--version", "0.1",
|
||||||
|
"--namespace", "test-namespace",
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "wait-from-default",
|
name: "wait-from-default",
|
||||||
defaults: HelmSpec{
|
defaults: HelmSpec{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue