Skip to content

Commit 862a9f3

Browse files
authored
Merge pull request #1820 from FabianKramm/master
fix: fixed component chart values validation
2 parents f37f9f3 + bc96a52 commit 862a9f3

File tree

4 files changed

+26
-34
lines changed

4 files changed

+26
-34
lines changed

e2e/tests/deploy/testdata/helm/devspace.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ deployments:
88
componentChart: true
99
values:
1010
containers:
11-
- image: ${IMAGE}
11+
- image: ${IMAGE}
12+
env: $(cat env.yaml)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- name: TEST
2+
value: value
3+
- name: TEST2
4+
value: value2

pkg/devspace/config/loader/validate.go

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@ package loader
33
import (
44
"fmt"
55
"github.com/loft-sh/devspace/pkg/devspace/imageselector"
6-
"path/filepath"
76
"strings"
87

98
jsonyaml "github.com/ghodss/yaml"
109
"github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
11-
"github.com/loft-sh/devspace/pkg/devspace/deploy/deployer/helm/merge"
1210
"github.com/loft-sh/devspace/pkg/util/log"
13-
"github.com/loft-sh/devspace/pkg/util/yamlutil"
1411
"github.com/pkg/errors"
1512
"gopkg.in/yaml.v2"
1613
k8sv1 "k8s.io/api/core/v1"
@@ -249,39 +246,22 @@ func validateDeployments(config *latest.Config) error {
249246
if deployConfig.Kubectl != nil && deployConfig.Kubectl.Manifests == nil {
250247
return errors.Errorf("deployments[%d].kubectl.manifests is required", index)
251248
}
252-
if deployConfig.Helm != nil && deployConfig.Helm.ComponentChart != nil && *deployConfig.Helm.ComponentChart {
253-
// Load override values from path
254-
overwriteValues := map[interface{}]interface{}{}
255-
if deployConfig.Helm.ValuesFiles != nil {
256-
for _, overridePath := range deployConfig.Helm.ValuesFiles {
257-
overwriteValuesPath, err := filepath.Abs(overridePath)
258-
if err != nil {
259-
return errors.Errorf("deployments[%d].helm.valuesFiles: Error retrieving absolute path from %s: %v", index, overridePath, err)
260-
}
261-
262-
overwriteValuesFromPath := map[interface{}]interface{}{}
263-
err = yamlutil.ReadYamlFromFile(overwriteValuesPath, overwriteValuesFromPath)
264-
if err == nil {
265-
merge.Values(overwriteValues).MergeInto(overwriteValuesFromPath)
266-
}
267-
}
268-
}
249+
}
269250

270-
// Load override values from data and merge them
271-
if deployConfig.Helm.Values != nil {
272-
merge.Values(overwriteValues).MergeInto(deployConfig.Helm.Values)
273-
}
251+
return nil
252+
}
274253

275-
bytes, err := yaml.Marshal(overwriteValues)
276-
if err != nil {
277-
return errors.Errorf("deployments[%d].helm: Error marshaling overwrite values: %v", index, err)
278-
}
254+
func ValidateComponentConfig(deployConfig *latest.DeploymentConfig, overwriteValues map[interface{}]interface{}) error {
255+
if deployConfig.Helm != nil && deployConfig.Helm.ComponentChart != nil && *deployConfig.Helm.ComponentChart {
256+
bytes, err := yaml.Marshal(overwriteValues)
257+
if err != nil {
258+
return errors.Errorf("deployments[%s].helm: Error marshaling overwrite values: %v", deployConfig.Name, err)
259+
}
279260

280-
componentValues := &latest.ComponentConfig{}
281-
err = yaml.UnmarshalStrict(bytes, componentValues)
282-
if err != nil {
283-
return errors.Errorf("deployments[%d].helm.componentChart: component values are incorrect: %v", index, err)
284-
}
261+
componentValues := &latest.ComponentConfig{}
262+
err = yaml.UnmarshalStrict(bytes, componentValues)
263+
if err != nil {
264+
return errors.Errorf("deployments[%s].helm.componentChart: component values are incorrect: %v", deployConfig.Name, err)
285265
}
286266
}
287267

pkg/devspace/deploy/deployer/helm/deploy.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package helm
22

33
import (
44
"fmt"
5+
"github.com/loft-sh/devspace/pkg/devspace/config/loader"
56
"github.com/loft-sh/devspace/pkg/devspace/config/loader/variable/legacy"
67
runtimevar "github.com/loft-sh/devspace/pkg/devspace/config/loader/variable/runtime"
78
"io"
@@ -223,5 +224,11 @@ func (d *DeployConfig) getDeploymentValues(builtImages map[string]string) (bool,
223224
merge.Values(overwriteValues).MergeInto(d.DeploymentConfig.Helm.Values)
224225
}
225226

227+
// Validate deployment values
228+
err = loader.ValidateComponentConfig(d.DeploymentConfig, overwriteValues)
229+
if err != nil {
230+
return false, nil, err
231+
}
232+
226233
return shouldRedeploy, overwriteValues, nil
227234
}

0 commit comments

Comments
 (0)