mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 17:37:46 +08:00
bake: support compose inline dockerfile
compose-go v1.13.0 supports the new dockerfile_inline to allow including a dockerfile inline in the compose definition, so we should map this to bake's dockerfile-inline property. Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
parent
cb061b684c
commit
5d06406f26
@ -69,6 +69,11 @@ func ParseCompose(cfgs []compose.ConfigFile, envs map[string]string) (*Config, e
|
|||||||
dockerfilePath := s.Build.Dockerfile
|
dockerfilePath := s.Build.Dockerfile
|
||||||
dockerfilePathP = &dockerfilePath
|
dockerfilePathP = &dockerfilePath
|
||||||
}
|
}
|
||||||
|
var dockerfileInlineP *string
|
||||||
|
if s.Build.DockerfileInline != "" {
|
||||||
|
dockerfileInline := s.Build.DockerfileInline
|
||||||
|
dockerfileInlineP = &dockerfileInline
|
||||||
|
}
|
||||||
|
|
||||||
var secrets []string
|
var secrets []string
|
||||||
for _, bs := range s.Build.Secrets {
|
for _, bs := range s.Build.Secrets {
|
||||||
@ -91,6 +96,7 @@ func ParseCompose(cfgs []compose.ConfigFile, envs map[string]string) (*Config, e
|
|||||||
Name: targetName,
|
Name: targetName,
|
||||||
Context: contextPathP,
|
Context: contextPathP,
|
||||||
Dockerfile: dockerfilePathP,
|
Dockerfile: dockerfilePathP,
|
||||||
|
DockerfileInline: dockerfileInlineP,
|
||||||
Tags: s.Build.Tags,
|
Tags: s.Build.Tags,
|
||||||
Labels: labels,
|
Labels: labels,
|
||||||
Args: flatten(s.Build.Args.Resolve(func(val string) (string, bool) {
|
Args: flatten(s.Build.Args.Resolve(func(val string) (string, bool) {
|
||||||
|
@ -33,6 +33,11 @@ services:
|
|||||||
secrets:
|
secrets:
|
||||||
- token
|
- token
|
||||||
- aws
|
- aws
|
||||||
|
webapp2:
|
||||||
|
build:
|
||||||
|
context: ./dir
|
||||||
|
dockerfile_inline: |
|
||||||
|
FROM alpine
|
||||||
secrets:
|
secrets:
|
||||||
token:
|
token:
|
||||||
environment: ENV_TOKEN
|
environment: ENV_TOKEN
|
||||||
@ -46,9 +51,9 @@ secrets:
|
|||||||
require.Equal(t, 1, len(c.Groups))
|
require.Equal(t, 1, len(c.Groups))
|
||||||
require.Equal(t, "default", c.Groups[0].Name)
|
require.Equal(t, "default", c.Groups[0].Name)
|
||||||
sort.Strings(c.Groups[0].Targets)
|
sort.Strings(c.Groups[0].Targets)
|
||||||
require.Equal(t, []string{"db", "webapp"}, c.Groups[0].Targets)
|
require.Equal(t, []string{"db", "webapp", "webapp2"}, c.Groups[0].Targets)
|
||||||
|
|
||||||
require.Equal(t, 2, len(c.Targets))
|
require.Equal(t, 3, len(c.Targets))
|
||||||
sort.Slice(c.Targets, func(i, j int) bool {
|
sort.Slice(c.Targets, func(i, j int) bool {
|
||||||
return c.Targets[i].Name < c.Targets[j].Name
|
return c.Targets[i].Name < c.Targets[j].Name
|
||||||
})
|
})
|
||||||
@ -68,6 +73,10 @@ secrets:
|
|||||||
"id=token,env=ENV_TOKEN",
|
"id=token,env=ENV_TOKEN",
|
||||||
"id=aws,src=/root/.aws/credentials",
|
"id=aws,src=/root/.aws/credentials",
|
||||||
}, c.Targets[1].Secrets)
|
}, c.Targets[1].Secrets)
|
||||||
|
|
||||||
|
require.Equal(t, "webapp2", c.Targets[2].Name)
|
||||||
|
require.Equal(t, "./dir", *c.Targets[2].Context)
|
||||||
|
require.Equal(t, "FROM alpine\n", *c.Targets[2].DockerfileInline)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNoBuildOutOfTreeService(t *testing.T) {
|
func TestNoBuildOutOfTreeService(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user