Skip to content

Commit 77c7967

Browse files
authored
Merge pull request #1960 from FabianKramm/master
refactor: default off .env file
2 parents 18c1700 + 7e140cd commit 77c7967

17 files changed

Lines changed: 966 additions & 458 deletions

File tree

cmd/root.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,12 @@ func NewRootCmd(f factory.Factory) *cobra.Command {
6363
}
6464

6565
// parse the .env file
66-
err := godotenv.Load()
67-
if err != nil && !os.IsNotExist(err) {
68-
log.Warnf("Error loading .env: %v", err)
66+
envFile := env.GlobalGetEnv("DEVSPACE_ENV_FILE")
67+
if envFile != "" {
68+
err := godotenv.Load(envFile)
69+
if err != nil && !os.IsNotExist(err) {
70+
log.Warnf("Error loading .env: %v", err)
71+
}
6972
}
7073

7174
// apply extra flags

e2e/tests/config/config.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ var _ = DevSpaceDescribe("config", func() {
4242
framework.ExpectNoError(err)
4343
})
4444

45+
ginkgo.It("should convert correctly", func() {
46+
tempDir, err := framework.CopyToTempDir("tests/config/testdata/convert")
47+
framework.ExpectNoError(err)
48+
defer framework.CleanupTempDir(initialDir, tempDir)
49+
50+
// reload it
51+
config, _, err := framework.LoadConfigWithOptions(f, kubeClient.Client(), "devspace.yaml", &loader.ConfigOptions{})
52+
framework.ExpectNoError(err)
53+
54+
framework.ExpectEqual(len(config.Config().Dev), 1)
55+
framework.ExpectEqual(config.Config().Dev["sync-0"].Container, "test")
56+
framework.ExpectEqual(config.Config().Dev["sync-0"].Terminal.Command, "test")
57+
})
58+
4559
ginkgo.It("should resolve runtime environment variables correctly", func() {
4660
tempDir, err := framework.CopyToTempDir("tests/config/testdata/runtime-variables")
4761
framework.ExpectNoError(err)
@@ -251,6 +265,64 @@ var _ = DevSpaceDescribe("config", func() {
251265
// check profile was loaded
252266
framework.ExpectEqual(len(config.Config().Images), 1)
253267
framework.ExpectEqual(len(config.Config().Deployments), 2)
268+
269+
// reload it with different profile
270+
config, _, err = framework.LoadConfigWithOptions(f, kubeClient.Client(), "devspace.yaml", &loader.ConfigOptions{Profiles: []string{"merge-deployments"}})
271+
framework.ExpectNoError(err)
272+
273+
// check profile was loaded
274+
framework.ExpectEqual(len(config.Config().Images), 1)
275+
framework.ExpectEqual(len(config.Config().Deployments), 1)
276+
framework.ExpectEqual(config.Config().Deployments["test456"].Name, "test456")
277+
framework.ExpectEqual(len(config.Config().Deployments["test456"].Kubectl.Manifests), 2)
278+
framework.ExpectEqual(config.Config().Deployments["test456"].Kubectl.Manifests[0], "test")
279+
framework.ExpectEqual(config.Config().Deployments["test456"].Kubectl.Manifests[1], "test.yaml")
280+
281+
// load new config
282+
config, _, err = framework.LoadConfigWithOptions(f, kubeClient.Client(), "devspace_new.yaml", &loader.ConfigOptions{Profiles: []string{"merge-deployments"}})
283+
framework.ExpectNoError(err)
284+
285+
// check profile was loaded
286+
framework.ExpectEqual(len(config.Config().Images), 1)
287+
framework.ExpectEqual(len(config.Config().Deployments), 2)
288+
289+
framework.ExpectEqual(config.Config().Deployments["test"].Name, "test")
290+
framework.ExpectEqual(len(config.Config().Deployments["test"].Kubectl.Manifests), 1)
291+
framework.ExpectEqual(config.Config().Deployments["test"].Kubectl.Manifests[0], "test")
292+
293+
framework.ExpectEqual(config.Config().Deployments["test456"].Name, "test456")
294+
framework.ExpectEqual(len(config.Config().Deployments["test456"].Kubectl.Manifests), 2)
295+
framework.ExpectEqual(config.Config().Deployments["test456"].Kubectl.Manifests[0], "test")
296+
framework.ExpectEqual(config.Config().Deployments["test456"].Kubectl.Manifests[1], "test.yaml")
297+
298+
// load new config
299+
config, _, err = framework.LoadConfigWithOptions(f, kubeClient.Client(), "devspace_new.yaml", &loader.ConfigOptions{Profiles: []string{"add-deployment"}})
300+
framework.ExpectNoError(err)
301+
302+
// check profile was loaded
303+
framework.ExpectEqual(len(config.Config().Images), 1)
304+
framework.ExpectEqual(len(config.Config().Deployments), 2)
305+
306+
framework.ExpectEqual(config.Config().Deployments["test"].Name, "test")
307+
framework.ExpectEqual(len(config.Config().Deployments["test"].Kubectl.Manifests), 1)
308+
framework.ExpectEqual(config.Config().Deployments["test"].Kubectl.Manifests[0], "test")
309+
310+
framework.ExpectEqual(config.Config().Deployments["test678"].Name, "test678")
311+
framework.ExpectEqual(len(config.Config().Deployments["test678"].Kubectl.Manifests), 1)
312+
framework.ExpectEqual(config.Config().Deployments["test678"].Kubectl.Manifests[0], "test")
313+
314+
// load new config
315+
config, _, err = framework.LoadConfigWithOptions(f, kubeClient.Client(), "devspace_new.yaml", &loader.ConfigOptions{Profiles: []string{"replace-manifests"}})
316+
framework.ExpectNoError(err)
317+
318+
// check profile was loaded
319+
framework.ExpectEqual(len(config.Config().Images), 1)
320+
framework.ExpectEqual(len(config.Config().Deployments), 1)
321+
322+
framework.ExpectEqual(config.Config().Deployments["test123"].Name, "test123")
323+
framework.ExpectEqual(len(config.Config().Deployments["test123"].Kubectl.Manifests), 2)
324+
framework.ExpectEqual(config.Config().Deployments["test123"].Kubectl.Manifests[0], "test123.yaml")
325+
framework.ExpectEqual(config.Config().Deployments["test123"].Kubectl.Manifests[1], "test")
254326
})
255327

256328
ginkgo.It("should auto activate profile using single environment variable", func() {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: v1beta11
2+
dev:
3+
sync:
4+
- labelSelector:
5+
app.kubernetes.io/name: test
6+
terminal:
7+
labelSelector:
8+
app.kubernetes.io/name: test
9+
containerName: test
10+
command: ["test"]

e2e/tests/config/testdata/profile/devspace.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ vars:
44
value: name
55
- name: NAME_2
66
value: name2
7+
- name: MANIFEST
78
images:
89
test:
910
image: test
@@ -16,6 +17,22 @@ profiles:
1617
- name: remove-image
1718
replace:
1819
images: {}
20+
- name: merge-deployments
21+
merge:
22+
deployments:
23+
- name: test456
24+
kubectl:
25+
manifests:
26+
- ${MANIFEST}
27+
- test.yaml
28+
- name: replace-manifests
29+
replace:
30+
deployments:
31+
- name: test123
32+
kubectl:
33+
manifests:
34+
- test123.yaml
35+
- ${MANIFEST}
1936
- name: add-deployment
2037
patches:
2138
- op: add
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
version: v2beta1
2+
name: test
3+
4+
vars:
5+
NAME: name
6+
NAME_2: name2
7+
MANIFEST: {}
8+
9+
images:
10+
test:
11+
image: test
12+
13+
deployments:
14+
test:
15+
kubectl:
16+
manifests:
17+
- ${MANIFEST}
18+
19+
profiles:
20+
- name: remove-image
21+
replace:
22+
images: {}
23+
- name: merge-deployments
24+
merge:
25+
deployments:
26+
test456:
27+
kubectl:
28+
manifests:
29+
- ${MANIFEST}
30+
- test.yaml
31+
- name: replace-manifests
32+
replace:
33+
deployments:
34+
test123:
35+
kubectl:
36+
manifests:
37+
- test123.yaml
38+
- ${MANIFEST}
39+
- name: add-deployment
40+
patches:
41+
- op: add
42+
path: deployments.test678
43+
value:
44+
kubectl:
45+
manifests:
46+
- ${MANIFEST}

e2e/tests/sync/sync.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package sync
22

33
import (
44
"context"
5+
"github.com/pkg/errors"
56
"io/ioutil"
67
"os"
78
"path/filepath"
@@ -149,7 +150,9 @@ var _ = DevSpaceDescribe("sync", func() {
149150
defer waitGroup.Done()
150151

151152
err := syncCmd.Run(f)
152-
framework.ExpectNoError(err)
153+
if err != nil && errors.Cause(err) != context.Canceled {
154+
framework.ExpectNoError(err)
155+
}
153156
}()
154157

155158
// wait until files were synced

pkg/devspace/config/loader/imports.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func ResolveImports(ctx context.Context, resolver variable.Resolver, basePath st
3333
return nil, err
3434
}
3535

36-
rawImports, err := versions.GetImports(rawData)
36+
rawImports, err := versions.Get(rawData, "imports")
3737
if err != nil {
3838
return nil, err
3939
}

pkg/devspace/config/loader/loader.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -558,12 +558,6 @@ func (l *configLoader) applyProfiles(ctx context.Context, data map[string]interf
558558
return nil, err
559559
}
560560

561-
// Apply strategic merge
562-
data, err = ApplyStrategicMerge(data, profiles[i])
563-
if err != nil {
564-
return nil, err
565-
}
566-
567561
// Apply patches
568562
data, err = ApplyPatches(data, profiles[i])
569563
if err != nil {

pkg/devspace/config/loader/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ type commandsParser struct{}
4040

4141
func (c *commandsParser) Parse(ctx context.Context, originalRawConfig map[string]interface{}, rawConfig map[string]interface{}, resolver variable.Resolver, log log.Logger) (*latest.Config, map[string]interface{}, error) {
4242
// modify the config
43-
preparedConfig, err := versions.GetCommands(rawConfig)
43+
preparedConfig, err := versions.Get(rawConfig, "commands")
4444
if err != nil {
4545
return nil, nil, err
4646
}

0 commit comments

Comments
 (0)