fix: helmfile panicing on missing lock file (#596)

Fixes #595
This commit is contained in:
KUOKA Yusuke 2019-05-15 13:16:22 +09:00 committed by GitHub
parent c9a43ad9cb
commit b0179218b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 73 additions and 1 deletions

View File

@ -140,6 +140,10 @@ func (st *HelmState) mergeLockedDependencies() (*HelmState, error) {
depMan := NewChartDependencyManager(filename, st.logger)
if st.readFile != nil {
depMan.readFile = st.readFile
}
return resolveDependencies(st, depMan, unresolved)
}
@ -325,7 +329,7 @@ func (m *chartDependencyManager) Resolve(unresolved *UnresolvedDependencies) (*R
updatedLockFileContent, err := m.readBytes(m.lockFileName())
if err != nil {
if os.IsNotExist(err) {
return nil, true, nil
return nil, false, nil
}
return nil, false, err
}

View File

@ -1500,6 +1500,52 @@ generated: 2019-05-14T11:29:35.144399+09:00
}
}
func TestHelmState_ResolveDeps(t *testing.T) {
logger := helmexec.NewLogger(os.Stderr, "debug")
state := &HelmState{
basePath: "/src",
FilePath: "/src/helmfile.yaml",
Releases: []ReleaseSpec{
{
Chart: "./..",
},
{
Chart: "../examples",
},
{
Chart: "../../helmfile",
},
{
Chart: "published",
},
{
Chart: "published/deeper",
},
{
Chart: "stable/envoy",
},
},
Repositories: []RepositorySpec{
{
Name: "stable",
URL: "https://kubernetes-charts.storage.googleapis.com",
},
},
logger: logger,
readFile: func(f string) ([]byte, error) {
if f != "helmfile.lock" {
return nil, fmt.Errorf("stub: unexpected file: %s", f)
}
return nil, os.ErrNotExist
},
}
_, err := state.ResolveDeps()
if err != nil {
t.Errorf("unexpected error: %v", err)
}
}
func TestHelmState_ReleaseStatuses(t *testing.T) {
tests := []struct {
name string

View File

@ -0,0 +1 @@
mysecret: MYSECRET

View File

@ -1,6 +1,13 @@
environments:
default:
values:
- environment.values.yaml
---
repositories:
- name: stable
url: https://kubernetes-charts.storage.googleapis.com/
- name: incubator
url: https://kubernetes-charts-incubator.storage.googleapis.com
helmDefaults:
kubeContext: minikube
@ -12,3 +19,17 @@ releases:
set:
- name: ingress.enabled
value: false
- name: raw
chart: incubator/raw
values:
- mysecret: {{ .Environment.Values.mysecret }}
resources: []
templates:
- |
apiVersion: v1
kind: Secret
metadata:
name: common-secret
stringData:
mykey: {{ .Values.mysecret }}