mirror of
https://github.com/moby/moby.git
synced 2026-07-22 15:32:50 +00:00
When image is built with buildkit with containerd integration the image service has no way of knowing that the image was tagged because buildkit creates the image directly in containerd image store. Add a callback that is called by the exporter wrapper. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package worker
|
|
|
|
import (
|
|
"context"
|
|
|
|
"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/worker/base"
|
|
)
|
|
|
|
// ContainerdWorker is a local worker instance with dedicated snapshotter, cache, and so on.
|
|
type ContainerdWorker struct {
|
|
*base.Worker
|
|
callbacks exporter.BuildkitCallbacks
|
|
}
|
|
|
|
// NewContainerdWorker instantiates a local worker.
|
|
func NewContainerdWorker(ctx context.Context, wo base.WorkerOpt, callbacks exporter.BuildkitCallbacks) (*ContainerdWorker, error) {
|
|
bw, err := base.NewWorker(ctx, wo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &ContainerdWorker{Worker: bw, callbacks: callbacks}, nil
|
|
}
|
|
|
|
// Exporter returns exporter by name
|
|
func (w *ContainerdWorker) Exporter(name string, sm *session.Manager) (bkexporter.Exporter, error) {
|
|
switch name {
|
|
case exporter.Moby:
|
|
exp, err := w.Worker.Exporter(client.ExporterImage, sm)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return exporter.NewWrapper(exp, w.callbacks)
|
|
default:
|
|
return w.Worker.Exporter(name, sm)
|
|
}
|
|
}
|