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:
yxxhero 2023-08-06 21:49:55 +08:00 committed by GitHub
parent 6d9bdb0d14
commit aac734ffd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 27 additions and 6 deletions

View File

@ -189,6 +189,7 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba
normalizedContent := bytes.ReplaceAll(content, []byte("\r\n"), []byte("\n"))
parts := bytes.Split(normalizedContent, []byte("\n---\n"))
hasEnv := env != nil || overrodeEnv != nil
var finalState *state.HelmState
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,
// 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{
Msg: fmt.Sprintf("failed to read %s", finalState.FilePath),
Cause: &state.UndefinedEnvError{Env: env.Name},

View File

@ -248,7 +248,7 @@ func (c *StateCreator) loadEnvValues(st *HelmState, name string, failOnMissingEn
return nil, err
}
}
} else if ctxEnv == nil && name != DefaultEnv && failOnMissingEnv {
} else if ctxEnv == nil && overrode == nil && name != DefaultEnv && failOnMissingEnv {
return nil, &UndefinedEnvError{Env: name}
}

View File

@ -0,0 +1,7 @@
releases:
- name: no-envs
chart: ../../../charts/raw-0.0.1
values:
- templates:
- |
envName: {{ .Values.envName }}

View File

@ -0,0 +1,3 @@
releases:
- name: no-values
chart: ../../../charts/raw-0.0.1

View File

@ -6,7 +6,7 @@ environments:
---
releases:
- name: raw
- name: prod
chart: ../../../charts/raw-0.0.1
values:
- templates:

View File

@ -6,7 +6,7 @@ environments:
---
releases:
- name: raw
- name: test
chart: ../../../charts/raw-0.0.1
values:
- templates:

View File

@ -10,3 +10,7 @@ helmfiles:
- path: helmfiles/prod.yaml
values:
- envName: {{ .Values.envName }}
- path: helmfiles/no-envs.yaml
values:
- envName: {{ .Values.envName }}
- path: helmfiles/no-values.yaml

View File

@ -1,7 +1,13 @@
Building dependency release=raw, chart=../../../charts/raw-0.0.1
Templating release=raw, chart=../../../charts/raw-0.0.1
Building dependency release=test, chart=../../../charts/raw-0.0.1
Templating release=test, chart=../../../charts/raw-0.0.1
---
# Source: raw/templates/resources.yaml
subhelmfile: 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