Skip to content

Commit c970067

Browse files
committed
fix: profiles variable patches
1 parent b827e64 commit c970067

4 files changed

Lines changed: 65 additions & 10 deletions

File tree

e2e/tests/config/config.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,28 @@ var _ = DevSpaceDescribe("config", func() {
5656
framework.ExpectEqual(config.Config().Dev["sync-0"].Terminal.Command, "test")
5757
})
5858

59+
ginkgo.It("should patch correctly", func() {
60+
tempDir, err := framework.CopyToTempDir("tests/config/testdata/profile-patches")
61+
framework.ExpectNoError(err)
62+
defer framework.CleanupTempDir(initialDir, tempDir)
63+
64+
// reload it
65+
config, _, err := framework.LoadConfigWithOptions(f, kubeClient.Client(), "var-patch.yaml", &loader.ConfigOptions{})
66+
framework.ExpectNoError(err)
67+
68+
framework.ExpectEqual(len(config.Config().Images), 1)
69+
framework.ExpectEqual(config.Config().Images["test"].Image, "sample")
70+
framework.ExpectEqual(config.Config().Images["test"].Kaniko.Labels, map[string]string{"app": "sample"})
71+
72+
// with profile
73+
config, _, err = framework.LoadConfigWithOptions(f, kubeClient.Client(), "var-patch.yaml", &loader.ConfigOptions{Profiles: []string{"alt"}})
74+
framework.ExpectNoError(err)
75+
76+
framework.ExpectEqual(len(config.Config().Images), 1)
77+
framework.ExpectEqual(config.Config().Images["test"].Image, "sample-alt")
78+
framework.ExpectEqual(config.Config().Images["test"].Kaniko.Labels, map[string]string{"app": "sample-alt"})
79+
})
80+
5981
ginkgo.It("should resolve runtime environment variables correctly", func() {
6082
tempDir, err := framework.CopyToTempDir("tests/config/testdata/runtime-variables")
6183
framework.ExpectNoError(err)
@@ -1737,8 +1759,7 @@ var _ = DevSpaceDescribe("config", func() {
17371759
framework.ExpectNoError(err)
17381760

17391761
// check if variables were loaded correctly
1740-
fmt.Println(config.Variables())
1741-
framework.ExpectEqual(len(config.Variables()), 4+len(variable.AlwaysResolvePredefinedVars))
1762+
framework.ExpectEqual(len(config.Variables()), 3+len(variable.AlwaysResolvePredefinedVars))
17421763
framework.ExpectEqual(len(config.LocalCache().ListVars()), 1)
17431764
test1, _ := config.LocalCache().GetVar("TEST_1")
17441765
framework.ExpectEqual(test1, "test")
@@ -1767,7 +1788,7 @@ var _ = DevSpaceDescribe("config", func() {
17671788
framework.ExpectNoError(err)
17681789

17691790
// config
1770-
framework.ExpectEqual(len(config.Variables()), 4+len(variable.AlwaysResolvePredefinedVars))
1791+
framework.ExpectEqual(len(config.Variables()), 3+len(variable.AlwaysResolvePredefinedVars))
17711792
framework.ExpectEqual(len(config.LocalCache().ListVars()), 2)
17721793
notUsed, _ = config.LocalCache().GetVar("NOT_USED2")
17731794
framework.ExpectEqual(notUsed, "test")
@@ -1792,7 +1813,7 @@ var _ = DevSpaceDescribe("config", func() {
17921813
framework.ExpectNoError(err)
17931814

17941815
// check if default config variables were loaded correctly
1795-
framework.ExpectEqual(len(config.Variables()), 3+len(variable.AlwaysResolvePredefinedVars))
1816+
framework.ExpectEqual(len(config.Variables()), 2+len(variable.AlwaysResolvePredefinedVars))
17961817
framework.ExpectEqual(len(config.LocalCache().ListVars()), 1)
17971818
value, _ := config.LocalCache().GetVar("NAME")
17981819
framework.ExpectEqual(value, "default")
@@ -1808,7 +1829,7 @@ var _ = DevSpaceDescribe("config", func() {
18081829
framework.ExpectNoError(err)
18091830

18101831
// check if custom config variables were loaded correctly
1811-
framework.ExpectEqual(len(customConfig.Variables()), 3+len(variable.AlwaysResolvePredefinedVars))
1832+
framework.ExpectEqual(len(customConfig.Variables()), 2+len(variable.AlwaysResolvePredefinedVars))
18121833
framework.ExpectEqual(len(customConfig.LocalCache().ListVars()), 1)
18131834
value, _ = customConfig.LocalCache().GetVar("NAME")
18141835
framework.ExpectEqual(value, "custom")
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
version: v1beta11
2+
3+
vars:
4+
- name: LABELS
5+
value:
6+
app: sample
7+
- name: BIN
8+
value: sample
9+
10+
images:
11+
test:
12+
image: ${BIN}
13+
build:
14+
kaniko:
15+
labels: ${LABELS}
16+
17+
profiles:
18+
- name: alt
19+
patches:
20+
- op: replace
21+
path: vars.name=LABELS.value
22+
value:
23+
app: sample-alt
24+
- op: replace
25+
path: vars.name=BIN.value
26+
value: sample-alt

pkg/devspace/config/loader/variable/resolver.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (r *resolver) replaceString(ctx context.Context, str string) (interface{},
114114
})
115115
}
116116

117-
func (r *resolver) FindVariables(haystack interface{}) ([]*latest.Variable, error) {
117+
func (r *resolver) findVariablesInclude(haystack interface{}, include []*regexp.Regexp) ([]*latest.Variable, error) {
118118
// find out what vars are really used
119119
varsUsed := map[string]bool{}
120120
switch t := haystack.(type) {
@@ -124,7 +124,11 @@ func (r *resolver) FindVariables(haystack interface{}) ([]*latest.Variable, erro
124124
return "", nil
125125
})
126126
case map[string]interface{}:
127-
err := walk.Walk(t, varMatchFn, func(_, value string) (interface{}, error) {
127+
err := walk.Walk(t, varMatchFn, func(path, value string) (interface{}, error) {
128+
if expression.ExcludedPath(path, nil, include) {
129+
return value, nil
130+
}
131+
128132
_, _ = varspkg.ParseString(value, func(v string) (interface{}, error) {
129133
varsUsed[v] = true
130134
return "", nil
@@ -139,7 +143,7 @@ func (r *resolver) FindVariables(haystack interface{}) ([]*latest.Variable, erro
139143

140144
// add always resolve variables
141145
for _, v := range r.vars {
142-
if v.AlwaysResolve || v.Value != nil {
146+
if v.AlwaysResolve {
143147
varsUsed[v.Name] = true
144148
}
145149
}
@@ -154,6 +158,10 @@ func (r *resolver) FindVariables(haystack interface{}) ([]*latest.Variable, erro
154158
return r.orderVariables(varsUsed)
155159
}
156160

161+
func (r *resolver) FindVariables(haystack interface{}) ([]*latest.Variable, error) {
162+
return r.findVariablesInclude(haystack, nil)
163+
}
164+
157165
func (r *resolver) orderVariables(vars map[string]bool) ([]*latest.Variable, error) {
158166
root := graph.NewNode("root", nil)
159167
g := graph.NewGraphOf(root, "variable")
@@ -295,7 +303,7 @@ func (r *resolver) FillVariables(ctx context.Context, haystack interface{}) (int
295303
}
296304

297305
func (r *resolver) findAndFillVariables(ctx context.Context, haystack interface{}, exclude, include []*regexp.Regexp) (interface{}, error) {
298-
varsUsed, err := r.FindVariables(haystack)
306+
varsUsed, err := r.findVariablesInclude(haystack, include)
299307
if err != nil {
300308
return nil, err
301309
}

pkg/devspace/services/sync/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ func readAll(reader io.Reader) ([]string, error) {
596596
excludes = append(excludes, pattern)
597597
}
598598
if err := scanner.Err(); err != nil {
599-
return nil, fmt.Errorf("Error reading .dockerignore: %v", err)
599+
return nil, fmt.Errorf("error reading .dockerignore: %v", err)
600600
}
601601
return excludes, nil
602602
}

0 commit comments

Comments
 (0)