Use the roundtripper during build

The roundtripper is responsible for giving back the build context when
it comes from a tar directly. So we add it to the source manager of the
containerd worker.

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
This commit is contained in:
Djordje Lukic
2024-12-30 23:34:57 +01:00
parent f5af46d4d5
commit 8d5cf1db1e
2 changed files with 15 additions and 2 deletions

View File

@@ -148,7 +148,7 @@ func newSnapshotterController(ctx context.Context, rt http.RoundTripper, opt Opt
}
wo.Executor = exec
w, err := mobyworker.NewContainerdWorker(ctx, wo, opt.Callbacks)
w, err := mobyworker.NewContainerdWorker(ctx, wo, opt.Callbacks, rt)
if err != nil {
return nil, err
}

View File

@@ -2,11 +2,14 @@ package worker
import (
"context"
nethttp "net/http"
"github.com/containerd/log"
"github.com/docker/docker/builder/builder-next/exporter"
"github.com/moby/buildkit/client"
bkexporter "github.com/moby/buildkit/exporter"
"github.com/moby/buildkit/session"
"github.com/moby/buildkit/source/http"
"github.com/moby/buildkit/worker/base"
)
@@ -17,11 +20,21 @@ type ContainerdWorker struct {
}
// NewContainerdWorker instantiates a local worker.
func NewContainerdWorker(ctx context.Context, wo base.WorkerOpt, callbacks exporter.BuildkitCallbacks) (*ContainerdWorker, error) {
func NewContainerdWorker(ctx context.Context, wo base.WorkerOpt, callbacks exporter.BuildkitCallbacks, rt nethttp.RoundTripper) (*ContainerdWorker, error) {
bw, err := base.NewWorker(ctx, wo)
if err != nil {
return nil, err
}
hs, err := http.NewSource(http.Opt{
CacheAccessor: bw.CacheManager(),
Transport: rt,
})
if err == nil {
bw.SourceManager.Register(hs)
} else {
log.G(ctx).Warnf("Could not register builder http source: %s", err)
}
return &ContainerdWorker{Worker: bw, callbacks: callbacks}, nil
}