mirror of
https://github.com/docker/compose.git
synced 2025-07-29 00:24:12 +02:00
only look for required image in bake metadata
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
213c03f99a
commit
97530790fa
@ -140,11 +140,10 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
|
||||
Targets: map[string]bakeTarget{},
|
||||
}
|
||||
var (
|
||||
group bakeGroup
|
||||
privileged bool
|
||||
read []string
|
||||
expectedImages = make(map[string]string, len(serviceToBeBuild)) // service name -> expected image
|
||||
targets = make(map[string]string, len(serviceToBeBuild)) // service name -> build target
|
||||
group bakeGroup
|
||||
privileged bool
|
||||
read []string
|
||||
targets = make(map[string]string, len(serviceToBeBuild)) // service name -> build target
|
||||
)
|
||||
|
||||
// produce a unique ID for service used as bake target
|
||||
@ -173,9 +172,6 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
|
||||
args[k] = *v
|
||||
}
|
||||
|
||||
image := api.GetImageNameOrDefault(service, project.Name)
|
||||
expectedImages[serviceName] = image
|
||||
|
||||
entitlements := build.Entitlements
|
||||
if slices.Contains(build.Entitlements, "security.insecure") {
|
||||
privileged = true
|
||||
@ -213,7 +209,7 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
|
||||
DockerfileInline: strings.ReplaceAll(build.DockerfileInline, "${", "$${"),
|
||||
Args: args,
|
||||
Labels: build.Labels,
|
||||
Tags: append(build.Tags, image),
|
||||
Tags: append(build.Tags, api.GetImageNameOrDefault(service, project.Name)),
|
||||
|
||||
CacheFrom: build.CacheFrom,
|
||||
// CacheTo: TODO
|
||||
@ -360,10 +356,11 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
|
||||
|
||||
cw := progress.ContextWriter(ctx)
|
||||
results := map[string]string{}
|
||||
for service, name := range expectedImages {
|
||||
built, ok := md[targets[service]]
|
||||
for name := range serviceToBeBuild {
|
||||
target := targets[name]
|
||||
built, ok := md[target]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("build result not found in Bake metadata for service %s", service)
|
||||
return nil, fmt.Errorf("build result not found in Bake metadata for service %s", name)
|
||||
}
|
||||
results[name] = built.Digest
|
||||
cw.Event(progress.BuiltEvent(name))
|
||||
|
@ -536,3 +536,31 @@ func TestBuildDependsOn(t *testing.T) {
|
||||
out := res.Combined()
|
||||
assert.Check(t, strings.Contains(out, "test1 Built"))
|
||||
}
|
||||
|
||||
func TestBuildSubset(t *testing.T) {
|
||||
c := NewParallelCLI(t)
|
||||
|
||||
t.Cleanup(func() {
|
||||
c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/subset/compose.yaml", "down", "--rmi=local")
|
||||
})
|
||||
|
||||
res := c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/subset/compose.yaml", "build", "main")
|
||||
out := res.Combined()
|
||||
assert.Check(t, strings.Contains(out, "main Built"))
|
||||
}
|
||||
|
||||
func TestBuildDependentImage(t *testing.T) {
|
||||
c := NewParallelCLI(t)
|
||||
|
||||
t.Cleanup(func() {
|
||||
c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "down", "--rmi=local")
|
||||
})
|
||||
|
||||
res := c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "build", "firstbuild")
|
||||
out := res.Combined()
|
||||
assert.Check(t, strings.Contains(out, "firstbuild Built"))
|
||||
|
||||
res = c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "build", "secondbuild")
|
||||
out = res.Combined()
|
||||
assert.Check(t, strings.Contains(out, "secondbuild Built"))
|
||||
}
|
||||
|
26
pkg/e2e/fixtures/build-test/dependencies/compose.yaml
Normal file
26
pkg/e2e/fixtures/build-test/dependencies/compose.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
services:
|
||||
firstbuild:
|
||||
build:
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
additional_contexts:
|
||||
dep1: service:dep1
|
||||
entrypoint: ["echo", "Hello from firstbuild"]
|
||||
depends_on:
|
||||
- dep1
|
||||
|
||||
secondbuild:
|
||||
build:
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
additional_contexts:
|
||||
dep1: service:dep1
|
||||
entrypoint: ["echo", "Hello from secondbuild"]
|
||||
depends_on:
|
||||
- dep1
|
||||
|
||||
dep1:
|
||||
build:
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
entrypoint: ["echo", "Hello from dep1"]
|
14
pkg/e2e/fixtures/build-test/subset/compose.yaml
Normal file
14
pkg/e2e/fixtures/build-test/subset/compose.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
services:
|
||||
main:
|
||||
build:
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
entrypoint: ["echo", "Hello from main"]
|
||||
depends_on:
|
||||
- dep1
|
||||
|
||||
dep1:
|
||||
build:
|
||||
dockerfile_inline: |
|
||||
FROM alpine
|
||||
entrypoint: ["echo", "Hello from dep1"]
|
Loading…
x
Reference in New Issue
Block a user