fix re-using environment state in sub-helmfiles issue (#951)
* fix re-using environment state in sub-helmfiles issue Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
6d9bdb0d14
commit
aac734ffd5
|
|
@ -189,6 +189,7 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba
|
||||||
normalizedContent := bytes.ReplaceAll(content, []byte("\r\n"), []byte("\n"))
|
normalizedContent := bytes.ReplaceAll(content, []byte("\r\n"), []byte("\n"))
|
||||||
parts := bytes.Split(normalizedContent, []byte("\n---\n"))
|
parts := bytes.Split(normalizedContent, []byte("\n---\n"))
|
||||||
|
|
||||||
|
hasEnv := env != nil || overrodeEnv != nil
|
||||||
var finalState *state.HelmState
|
var finalState *state.HelmState
|
||||||
|
|
||||||
for i, part := range parts {
|
for i, part := range parts {
|
||||||
|
|
@ -267,7 +268,7 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba
|
||||||
|
|
||||||
// If environments are not defined in the helmfile at all although the env is specified,
|
// If environments are not defined in the helmfile at all although the env is specified,
|
||||||
// it's a missing env situation. Let's fail.
|
// it's a missing env situation. Let's fail.
|
||||||
if len(finalState.Environments) == 0 && evaluateBases && env.Name != state.DefaultEnv {
|
if len(finalState.Environments) == 0 && evaluateBases && !hasEnv && env.Name != state.DefaultEnv {
|
||||||
return nil, &state.StateLoadError{
|
return nil, &state.StateLoadError{
|
||||||
Msg: fmt.Sprintf("failed to read %s", finalState.FilePath),
|
Msg: fmt.Sprintf("failed to read %s", finalState.FilePath),
|
||||||
Cause: &state.UndefinedEnvError{Env: env.Name},
|
Cause: &state.UndefinedEnvError{Env: env.Name},
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@ func (c *StateCreator) loadEnvValues(st *HelmState, name string, failOnMissingEn
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ctxEnv == nil && name != DefaultEnv && failOnMissingEnv {
|
} else if ctxEnv == nil && overrode == nil && name != DefaultEnv && failOnMissingEnv {
|
||||||
return nil, &UndefinedEnvError{Env: name}
|
return nil, &UndefinedEnvError{Env: name}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
releases:
|
||||||
|
- name: no-envs
|
||||||
|
chart: ../../../charts/raw-0.0.1
|
||||||
|
values:
|
||||||
|
- templates:
|
||||||
|
- |
|
||||||
|
envName: {{ .Values.envName }}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
releases:
|
||||||
|
- name: no-values
|
||||||
|
chart: ../../../charts/raw-0.0.1
|
||||||
|
|
@ -6,7 +6,7 @@ environments:
|
||||||
---
|
---
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: raw
|
- name: prod
|
||||||
chart: ../../../charts/raw-0.0.1
|
chart: ../../../charts/raw-0.0.1
|
||||||
values:
|
values:
|
||||||
- templates:
|
- templates:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ environments:
|
||||||
---
|
---
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: raw
|
- name: test
|
||||||
chart: ../../../charts/raw-0.0.1
|
chart: ../../../charts/raw-0.0.1
|
||||||
values:
|
values:
|
||||||
- templates:
|
- templates:
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,7 @@ helmfiles:
|
||||||
- path: helmfiles/prod.yaml
|
- path: helmfiles/prod.yaml
|
||||||
values:
|
values:
|
||||||
- envName: {{ .Values.envName }}
|
- envName: {{ .Values.envName }}
|
||||||
|
- path: helmfiles/no-envs.yaml
|
||||||
|
values:
|
||||||
|
- envName: {{ .Values.envName }}
|
||||||
|
- path: helmfiles/no-values.yaml
|
||||||
|
|
@ -1,7 +1,13 @@
|
||||||
Building dependency release=raw, chart=../../../charts/raw-0.0.1
|
Building dependency release=test, chart=../../../charts/raw-0.0.1
|
||||||
Templating release=raw, chart=../../../charts/raw-0.0.1
|
Templating release=test, chart=../../../charts/raw-0.0.1
|
||||||
---
|
---
|
||||||
# Source: raw/templates/resources.yaml
|
# Source: raw/templates/resources.yaml
|
||||||
subhelmfile: test
|
subhelmfile: test
|
||||||
envName: test
|
envName: test
|
||||||
|
|
||||||
|
Building dependency release=no-envs, chart=../../../charts/raw-0.0.1
|
||||||
|
Templating release=no-envs, chart=../../../charts/raw-0.0.1
|
||||||
|
---
|
||||||
|
# Source: raw/templates/resources.yaml
|
||||||
|
envName: test
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue