From b8da14166c598843030e67b51582ee7263e3c2d3 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Thu, 27 Jun 2024 17:53:22 -0700 Subject: [PATCH] build: fix sharedkey computation for local context When LocalDirs were changed to LocalMounts, this broke the sharedKey computation that was based on the context directory path. SharedKey defines if directory is valid candidate for incremental context transfer and if not set properly then different directories do metadata-based transfers to same destination. Signed-off-by: Tonis Tiigi --- build/opt.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/build/opt.go b/build/opt.go index 0e264f19..f6cdc8bf 100644 --- a/build/opt.go +++ b/build/opt.go @@ -272,11 +272,9 @@ func toSolveOpt(ctx context.Context, node builder.Node, multiDriver bool, opt Op } defers = append(defers, releaseLoad) - if sharedKey := so.LocalDirs["context"]; sharedKey != "" { - if p, err := filepath.Abs(sharedKey); err == nil { - sharedKey = filepath.Base(p) - } - so.SharedKey = sharedKey + ":" + confutil.TryNodeIdentifier(configDir) + // add node identifier to shared key if one was specified + if so.SharedKey != "" { + so.SharedKey += ":" + confutil.TryNodeIdentifier(configDir) } if opt.Pull { @@ -416,6 +414,11 @@ func loadInputs(ctx context.Context, d *driver.DriverHandle, inp Inputs, addVCSL if err := setLocalMount("context", inp.ContextPath, target, addVCSLocalDir); err != nil { return nil, err } + sharedKey := inp.ContextPath + if p, err := filepath.Abs(sharedKey); err == nil { + sharedKey = filepath.Base(p) + } + target.SharedKey = sharedKey switch inp.DockerfilePath { case "-": dockerfileReader = inp.InStream