mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +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
|
||||
dockerfilePathP = &dockerfilePath
|
||||
}
|
||||
var dockerfileInlineP *string
|
||||
if s.Build.DockerfileInline != "" {
|
||||
dockerfileInline := s.Build.DockerfileInline
|
||||
dockerfileInlineP = &dockerfileInline
|
||||
}
|
||||
|
||||
var secrets []string
|
||||
for _, bs := range s.Build.Secrets {
|
||||
@ -88,11 +93,12 @@ func ParseCompose(cfgs []compose.ConfigFile, envs map[string]string) (*Config, e
|
||||
|
||||
g.Targets = append(g.Targets, targetName)
|
||||
t := &Target{
|
||||
Name: targetName,
|
||||
Context: contextPathP,
|
||||
Dockerfile: dockerfilePathP,
|
||||
Tags: s.Build.Tags,
|
||||
Labels: labels,
|
||||
Name: targetName,
|
||||
Context: contextPathP,
|
||||
Dockerfile: dockerfilePathP,
|
||||
DockerfileInline: dockerfileInlineP,
|
||||
Tags: s.Build.Tags,
|
||||
Labels: labels,
|
||||
Args: flatten(s.Build.Args.Resolve(func(val string) (string, bool) {
|
||||
if val, ok := s.Environment[val]; ok && val != nil {
|
||||
return *val, true
|
||||
|
@ -33,6 +33,11 @@ services:
|
||||
secrets:
|
||||
- token
|
||||
- aws
|
||||
webapp2:
|
||||
build:
|
||||
context: ./dir
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
secrets:
|
||||
token:
|
||||
environment: ENV_TOKEN
|
||||
@ -46,9 +51,9 @@ secrets:
|
||||
require.Equal(t, 1, len(c.Groups))
|
||||
require.Equal(t, "default", c.Groups[0].Name)
|
||||
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 {
|
||||
return c.Targets[i].Name < c.Targets[j].Name
|
||||
})
|
||||
@ -68,6 +73,10 @@ secrets:
|
||||
"id=token,env=ENV_TOKEN",
|
||||
"id=aws,src=/root/.aws/credentials",
|
||||
}, 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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user