Skip to content

Commit 4897778

Browse files
committed
bake: check for empty build network with compose
Signed-off-by: CrazyMax <[email protected]>
1 parent e540bb0 commit 4897778

File tree

2 files changed

+66
-36
lines changed

2 files changed

+66
-36
lines changed

bake/compose.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
102102
shmSize = &shmSizeStr
103103
}
104104

105+
var networkModeP *string
106+
if s.Build.Network != "" {
107+
networkMode := s.Build.Network
108+
networkModeP = &networkMode
109+
}
110+
105111
var ulimits []string
106112
if s.Build.Ulimits != nil {
107113
for n, u := range s.Build.Ulimits {
@@ -154,7 +160,7 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
154160
})),
155161
CacheFrom: s.Build.CacheFrom,
156162
CacheTo: s.Build.CacheTo,
157-
NetworkMode: &s.Build.Network,
163+
NetworkMode: networkModeP,
158164
SSH: ssh,
159165
Secrets: secrets,
160166
ShmSize: shmSize,

tests/bake.go

Lines changed: 59 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -63,48 +63,70 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){
6363
}
6464

6565
func testBakePrint(t *testing.T, sb integration.Sandbox) {
66-
dockerfile := []byte(`
67-
FROM busybox
68-
ARG HELLO
69-
RUN echo "Hello ${HELLO}"
70-
`)
71-
bakefile := []byte(`
66+
testCases := []struct {
67+
name string
68+
f string
69+
dt []byte
70+
}{
71+
{
72+
"HCL",
73+
"docker-bake.hcl",
74+
[]byte(`
7275
target "build" {
7376
args = {
7477
HELLO = "foo"
7578
}
7679
}
77-
`)
78-
dir := tmpdir(
79-
t,
80-
fstest.CreateFile("docker-bake.hcl", bakefile, 0600),
81-
fstest.CreateFile("Dockerfile", dockerfile, 0600),
82-
)
83-
84-
cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--print", "build"))
85-
stdout := bytes.Buffer{}
86-
stderr := bytes.Buffer{}
87-
cmd.Stdout = &stdout
88-
cmd.Stderr = &stderr
89-
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
90-
91-
var def struct {
92-
Group map[string]*bake.Group `json:"group,omitempty"`
93-
Target map[string]*bake.Target `json:"target"`
80+
`)},
81+
{
82+
"Compose",
83+
"compose.yml",
84+
[]byte(`
85+
services:
86+
build:
87+
build:
88+
context: .
89+
args:
90+
HELLO: foo
91+
`)},
9492
}
95-
require.NoError(t, json.Unmarshal(stdout.Bytes(), &def))
9693

97-
require.Len(t, def.Group, 1)
98-
require.Contains(t, def.Group, "default")
99-
100-
require.Equal(t, []string{"build"}, def.Group["default"].Targets)
101-
require.Len(t, def.Target, 1)
102-
require.Contains(t, def.Target, "build")
103-
require.Equal(t, ".", *def.Target["build"].Context)
104-
require.Equal(t, "Dockerfile", *def.Target["build"].Dockerfile)
105-
require.Equal(t, map[string]*string{"HELLO": ptrstr("foo")}, def.Target["build"].Args)
106-
107-
require.Equal(t, `{
94+
for _, tc := range testCases {
95+
t.Run(tc.name, func(t *testing.T) {
96+
dir := tmpdir(
97+
t,
98+
fstest.CreateFile(tc.f, tc.dt, 0600),
99+
fstest.CreateFile("Dockerfile", []byte(`
100+
FROM busybox
101+
ARG HELLO
102+
RUN echo "Hello ${HELLO}"
103+
`), 0600),
104+
)
105+
106+
cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--print", "build"))
107+
stdout := bytes.Buffer{}
108+
stderr := bytes.Buffer{}
109+
cmd.Stdout = &stdout
110+
cmd.Stderr = &stderr
111+
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
112+
113+
var def struct {
114+
Group map[string]*bake.Group `json:"group,omitempty"`
115+
Target map[string]*bake.Target `json:"target"`
116+
}
117+
require.NoError(t, json.Unmarshal(stdout.Bytes(), &def))
118+
119+
require.Len(t, def.Group, 1)
120+
require.Contains(t, def.Group, "default")
121+
122+
require.Equal(t, []string{"build"}, def.Group["default"].Targets)
123+
require.Len(t, def.Target, 1)
124+
require.Contains(t, def.Target, "build")
125+
require.Equal(t, ".", *def.Target["build"].Context)
126+
require.Equal(t, "Dockerfile", *def.Target["build"].Dockerfile)
127+
require.Equal(t, map[string]*string{"HELLO": ptrstr("foo")}, def.Target["build"].Args)
128+
129+
require.Equal(t, `{
108130
"group": {
109131
"default": {
110132
"targets": [
@@ -123,6 +145,8 @@ target "build" {
123145
}
124146
}
125147
`, stdout.String())
148+
})
149+
}
126150
}
127151

128152
func testBakeLocal(t *testing.T, sb integration.Sandbox) {

0 commit comments

Comments
 (0)