Skip to content

Commit 22f7cae

Browse files
committed
builder: experimental buildkit base
Signed-off-by: Tonis Tiigi <[email protected]>
1 parent 27fa0e8 commit 22f7cae

8 files changed

Lines changed: 943 additions & 111 deletions

File tree

api/server/backend/build/backend.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ package build // import "github.com/docker/docker/api/server/backend/build"
33
import (
44
"context"
55
"fmt"
6+
"strings"
67

78
"github.com/docker/distribution/reference"
89
"github.com/docker/docker/api/types"
910
"github.com/docker/docker/api/types/backend"
1011
"github.com/docker/docker/builder"
12+
buildkit "github.com/docker/docker/builder/builder-next"
1113
"github.com/docker/docker/builder/fscache"
1214
"github.com/docker/docker/image"
1315
"github.com/docker/docker/pkg/stringid"
@@ -30,24 +32,39 @@ type Backend struct {
3032
builder Builder
3133
fsCache *fscache.FSCache
3234
imageComponent ImageComponent
35+
buildkit *buildkit.Builder
3336
}
3437

3538
// NewBackend creates a new build backend from components
36-
func NewBackend(components ImageComponent, builder Builder, fsCache *fscache.FSCache) (*Backend, error) {
37-
return &Backend{imageComponent: components, builder: builder, fsCache: fsCache}, nil
39+
func NewBackend(components ImageComponent, builder Builder, fsCache *fscache.FSCache, buildkit *buildkit.Builder) (*Backend, error) {
40+
return &Backend{imageComponent: components, builder: builder, fsCache: fsCache, buildkit: buildkit}, nil
3841
}
3942

4043
// Build builds an image from a Source
4144
func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string, error) {
4245
options := config.Options
46+
useBuildKit := false
47+
if strings.HasPrefix(options.SessionID, "buildkit:") {
48+
useBuildKit = true
49+
options.SessionID = strings.TrimPrefix(options.SessionID, "buildkit:")
50+
}
51+
4352
tagger, err := NewTagger(b.imageComponent, config.ProgressWriter.StdoutFormatter, options.Tags)
4453
if err != nil {
4554
return "", err
4655
}
4756

48-
build, err := b.builder.Build(ctx, config)
49-
if err != nil {
50-
return "", err
57+
var build *builder.Result
58+
if useBuildKit {
59+
build, err = b.buildkit.Build(ctx, config)
60+
if err != nil {
61+
return "", err
62+
}
63+
} else {
64+
build, err = b.builder.Build(ctx, config)
65+
if err != nil {
66+
return "", err
67+
}
5168
}
5269

5370
var imageID = build.ImageID

0 commit comments

Comments
 (0)