Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit a8e078d

Browse files
authored
Merge pull request #597 from ulyssessouza/nsfod_envfile
Fix 'env_file' retrieval by using app.Path as WorkingDir in the render action
2 parents 925c394 + f6dc938 commit a8e078d

File tree

7 files changed

+55
-7
lines changed

7 files changed

+55
-7
lines changed

e2e/envfile_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package e2e
2+
3+
import (
4+
"path/filepath"
5+
"testing"
6+
7+
"gotest.tools/icmd"
8+
)
9+
10+
func TestRenderWithEnvFile(t *testing.T) {
11+
cmd, cleanup := dockerCli.createTestCmd()
12+
defer cleanup()
13+
appPath := filepath.Join("testdata", "envfile", "envfile.dockerapp")
14+
15+
cmd.Command = dockerCli.Command("app", "render", appPath)
16+
icmd.RunCmd(cmd).Assert(t, icmd.Expected{Out: `version: "3.7"
17+
services:
18+
db:
19+
environment:
20+
COMPANY: mycompany
21+
SOME_FILE: /some/file
22+
USER: myuser
23+
env_file:
24+
- myvars.env
25+
image: busybox:1.30.1`})
26+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: "3.7"
2+
3+
services:
4+
db:
5+
image: busybox:1.30.1
6+
env_file:
7+
- myvars.env
8+
environment:
9+
- SOME_FILE=/some/file
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Version of the application
2+
version: 0.1.0
3+
# Name of the application
4+
name: envfile
5+
# A short description of the application
6+
description:
7+
# List of application maintainers with name and email for each
8+
maintainers:
9+
- name: dev
10+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
USER=myuser
2+
COMPANY=mycompany
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

render/render.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ func Render(app *types.App, env map[string]string, imageMap map[string]bundle.Im
4141
if err != nil {
4242
return nil, errors.Wrap(err, "failed to load composefiles")
4343
}
44-
return render(configFiles, allParameters.Flatten(), imageMap)
44+
return render(app.Path, configFiles, allParameters.Flatten(), imageMap)
4545
}
4646

47-
func render(configFiles []composetypes.ConfigFile, finalEnv map[string]string, imageMap map[string]bundle.Image) (*composetypes.Config, error) {
47+
func render(appPath string, configFiles []composetypes.ConfigFile, finalEnv map[string]string, imageMap map[string]bundle.Image) (*composetypes.Config, error) {
4848
rendered, err := loader.Load(composetypes.ConfigDetails{
49-
WorkingDir: ".",
49+
WorkingDir: appPath,
5050
ConfigFiles: configFiles,
5151
Environment: finalEnv,
5252
}, func(opts *loader.Options) {

render/render_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestRenderMissingValue(t *testing.T) {
3434
finalEnv := map[string]string{
3535
"imageName": "foo",
3636
}
37-
_, err := render(configFiles, finalEnv, nil)
37+
_, err := render("foo.dockerapp", configFiles, finalEnv, nil)
3838
assert.Check(t, err != nil)
3939
assert.Check(t, is.ErrorContains(err, "required variable"))
4040
}
@@ -57,7 +57,7 @@ func TestRender(t *testing.T) {
5757
"version": "latest",
5858
"foo.bar": "baz",
5959
}
60-
c, err := render(configFiles, finalEnv, nil)
60+
c, err := render("foo.dockerapp", configFiles, finalEnv, nil)
6161
assert.NilError(t, err)
6262
assert.Check(t, is.Len(c.Services, 1))
6363
assert.Check(t, is.Equal(c.Services[0].Image, "busybox:latest"))
@@ -80,7 +80,7 @@ func TestRenderEnabledFalse(t *testing.T) {
8080
},
8181
},
8282
}
83-
c, err := render(configs, map[string]string{
83+
c, err := render("foo.dockerapp", configs, map[string]string{
8484
"myapp.debug": "true",
8585
}, nil)
8686
assert.NilError(t, err)
@@ -226,7 +226,7 @@ func TestServiceImageOverride(t *testing.T) {
226226
},
227227
},
228228
}
229-
c, err := render(configFiles, nil, map[string]bundle.Image{
229+
c, err := render("foo.dockerapp", configFiles, nil, map[string]bundle.Image{
230230
"foo": {BaseImage: bundle.BaseImage{Image: "test"}},
231231
})
232232
assert.NilError(t, err)

0 commit comments

Comments
 (0)