mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 09:17:49 +08:00
bake: check for empty build network with compose
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
parent
e540bb03a4
commit
48977780ad
@ -102,6 +102,12 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
|
|||||||
shmSize = &shmSizeStr
|
shmSize = &shmSizeStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var networkModeP *string
|
||||||
|
if s.Build.Network != "" {
|
||||||
|
networkMode := s.Build.Network
|
||||||
|
networkModeP = &networkMode
|
||||||
|
}
|
||||||
|
|
||||||
var ulimits []string
|
var ulimits []string
|
||||||
if s.Build.Ulimits != nil {
|
if s.Build.Ulimits != nil {
|
||||||
for n, u := range s.Build.Ulimits {
|
for n, u := range s.Build.Ulimits {
|
||||||
@ -154,7 +160,7 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
|
|||||||
})),
|
})),
|
||||||
CacheFrom: s.Build.CacheFrom,
|
CacheFrom: s.Build.CacheFrom,
|
||||||
CacheTo: s.Build.CacheTo,
|
CacheTo: s.Build.CacheTo,
|
||||||
NetworkMode: &s.Build.Network,
|
NetworkMode: networkModeP,
|
||||||
SSH: ssh,
|
SSH: ssh,
|
||||||
Secrets: secrets,
|
Secrets: secrets,
|
||||||
ShmSize: shmSize,
|
ShmSize: shmSize,
|
||||||
|
@ -63,48 +63,70 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testBakePrint(t *testing.T, sb integration.Sandbox) {
|
func testBakePrint(t *testing.T, sb integration.Sandbox) {
|
||||||
dockerfile := []byte(`
|
testCases := []struct {
|
||||||
FROM busybox
|
name string
|
||||||
ARG HELLO
|
f string
|
||||||
RUN echo "Hello ${HELLO}"
|
dt []byte
|
||||||
`)
|
}{
|
||||||
bakefile := []byte(`
|
{
|
||||||
|
"HCL",
|
||||||
|
"docker-bake.hcl",
|
||||||
|
[]byte(`
|
||||||
target "build" {
|
target "build" {
|
||||||
args = {
|
args = {
|
||||||
HELLO = "foo"
|
HELLO = "foo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`)
|
`)},
|
||||||
dir := tmpdir(
|
{
|
||||||
t,
|
"Compose",
|
||||||
fstest.CreateFile("docker-bake.hcl", bakefile, 0600),
|
"compose.yml",
|
||||||
fstest.CreateFile("Dockerfile", dockerfile, 0600),
|
[]byte(`
|
||||||
)
|
services:
|
||||||
|
build:
|
||||||
cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--print", "build"))
|
build:
|
||||||
stdout := bytes.Buffer{}
|
context: .
|
||||||
stderr := bytes.Buffer{}
|
args:
|
||||||
cmd.Stdout = &stdout
|
HELLO: foo
|
||||||
cmd.Stderr = &stderr
|
`)},
|
||||||
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
|
|
||||||
|
|
||||||
var def struct {
|
|
||||||
Group map[string]*bake.Group `json:"group,omitempty"`
|
|
||||||
Target map[string]*bake.Target `json:"target"`
|
|
||||||
}
|
}
|
||||||
require.NoError(t, json.Unmarshal(stdout.Bytes(), &def))
|
|
||||||
|
|
||||||
require.Len(t, def.Group, 1)
|
for _, tc := range testCases {
|
||||||
require.Contains(t, def.Group, "default")
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
dir := tmpdir(
|
||||||
|
t,
|
||||||
|
fstest.CreateFile(tc.f, tc.dt, 0600),
|
||||||
|
fstest.CreateFile("Dockerfile", []byte(`
|
||||||
|
FROM busybox
|
||||||
|
ARG HELLO
|
||||||
|
RUN echo "Hello ${HELLO}"
|
||||||
|
`), 0600),
|
||||||
|
)
|
||||||
|
|
||||||
require.Equal(t, []string{"build"}, def.Group["default"].Targets)
|
cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--print", "build"))
|
||||||
require.Len(t, def.Target, 1)
|
stdout := bytes.Buffer{}
|
||||||
require.Contains(t, def.Target, "build")
|
stderr := bytes.Buffer{}
|
||||||
require.Equal(t, ".", *def.Target["build"].Context)
|
cmd.Stdout = &stdout
|
||||||
require.Equal(t, "Dockerfile", *def.Target["build"].Dockerfile)
|
cmd.Stderr = &stderr
|
||||||
require.Equal(t, map[string]*string{"HELLO": ptrstr("foo")}, def.Target["build"].Args)
|
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
|
||||||
|
|
||||||
require.Equal(t, `{
|
var def struct {
|
||||||
|
Group map[string]*bake.Group `json:"group,omitempty"`
|
||||||
|
Target map[string]*bake.Target `json:"target"`
|
||||||
|
}
|
||||||
|
require.NoError(t, json.Unmarshal(stdout.Bytes(), &def))
|
||||||
|
|
||||||
|
require.Len(t, def.Group, 1)
|
||||||
|
require.Contains(t, def.Group, "default")
|
||||||
|
|
||||||
|
require.Equal(t, []string{"build"}, def.Group["default"].Targets)
|
||||||
|
require.Len(t, def.Target, 1)
|
||||||
|
require.Contains(t, def.Target, "build")
|
||||||
|
require.Equal(t, ".", *def.Target["build"].Context)
|
||||||
|
require.Equal(t, "Dockerfile", *def.Target["build"].Dockerfile)
|
||||||
|
require.Equal(t, map[string]*string{"HELLO": ptrstr("foo")}, def.Target["build"].Args)
|
||||||
|
|
||||||
|
require.Equal(t, `{
|
||||||
"group": {
|
"group": {
|
||||||
"default": {
|
"default": {
|
||||||
"targets": [
|
"targets": [
|
||||||
@ -123,6 +145,8 @@ target "build" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, stdout.String())
|
`, stdout.String())
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBakeLocal(t *testing.T, sb integration.Sandbox) {
|
func testBakeLocal(t *testing.T, sb integration.Sandbox) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user