Skip to content

Commit

Permalink
feat: upload boot and load vertices to depot
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Goller <[email protected]>
  • Loading branch information
goller committed Oct 2, 2023
1 parent ccf8115 commit 9f2ed61
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 10 deletions.
8 changes: 7 additions & 1 deletion pkg/buildx/commands/bake.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,13 @@ func RunBake(dockerCli command.Cli, in BakeOptions, validator BakeValidator) (er

ctx2, cancel := context.WithCancel(context.TODO())

printer, finish, err := depotprogress.NewProgress(ctx2, in.buildID, in.token, depotprogress.NewProgressMode(in.progress))
buildxprinter, err := progress.NewPrinter(ctx2, os.Stderr, os.Stderr, in.progress)
if err != nil {
cancel()
return err
}

printer, finish, err := depotprogress.NewProgress(ctx2, in.buildID, in.token, depotprogress.NewProgressMode(in.progress), buildxprinter)
if err != nil {
cancel()
return err
Expand Down
10 changes: 8 additions & 2 deletions pkg/buildx/commands/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,13 @@ func (c nopCloser) Close() error { return nil }
func buildTargets(ctx context.Context, dockerCli command.Cli, nodes []builder.Node, opts map[string]build.Options, depotOpts DepotOptions, progressMode, metadataFile string, exportLoad, allowNoOutput bool) (imageIDs []string, res *build.ResultContext, err error) {
ctx2, cancel := context.WithCancel(context.TODO())

printer, finish, err := depotprogress.NewProgress(ctx2, depotOpts.buildID, depotOpts.token, depotprogress.NewProgressMode(progressMode))
buildxprinter, err := progress.NewPrinter(ctx2, os.Stderr, os.Stderr, progressMode)
if err != nil {
cancel()
return nil, nil, err
}

printer, finish, err := depotprogress.NewProgress(ctx2, depotOpts.buildID, depotOpts.token, depotprogress.NewProgressMode(progressMode), buildxprinter)
if err != nil {
cancel()
return nil, nil, err
Expand Down Expand Up @@ -267,7 +273,7 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, nodes []builder.No
linter := NewLinter(NewLintFailureMode(depotOpts.lint, depotOpts.lintFailOn), clients, buildxNodes)
dockerfileHandlers := depotbuild.NewDockerfileHandlers(uploader, linter)

resp, err := depotbuild.DepotBuildWithResultHandler(ctx, buildxNodes, opts, dockerClient, dockerConfigDir, printer, dockerfileHandlers, func(driverIndex int, gotRes *build.ResultContext) {
resp, err := depotbuild.DepotBuildWithResultHandler(ctx, buildxNodes, opts, dockerClient, dockerConfigDir, buildxprinter, dockerfileHandlers, func(driverIndex int, gotRes *build.ResultContext) {
mu.Lock()
defer mu.Unlock()
if res == nil || driverIndex < idx {
Expand Down
11 changes: 10 additions & 1 deletion pkg/cmd/buildctl/dial-stdio.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/depot/cli/pkg/machine"
"github.com/depot/cli/pkg/progress"
cliv1 "github.com/depot/cli/pkg/proto/depot/cli/v1"
buildxprogress "github.com/docker/buildx/util/progress"
"github.com/moby/buildkit/client"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -141,7 +142,15 @@ func run() error {

ctx2 := context.TODO()
ctx2, cancelStatus = context.WithCancel(ctx2)
state.Reporter, finishStatus, _ = progress.NewProgress(ctx2, build.ID, build.Token, progress.Quiet)

buildxprinter, err := buildxprogress.NewPrinter(ctx2, os.Stderr, os.Stderr, "quiet")
if err != nil {
state.Err = fmt.Errorf("unable to create buildx printer: %w", err)
cancel()
return
}

state.Reporter, finishStatus, _ = progress.NewProgress(ctx2, build.ID, build.Token, progress.Quiet, buildxprinter)
state.Reporter.AddListener(listener)

state.SummaryURL = build.BuildURL
Expand Down
7 changes: 1 addition & 6 deletions pkg/progress/progress.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package progress

import (
"context"
"os"
"sort"
"strings"
"sync"
Expand Down Expand Up @@ -50,13 +49,9 @@ type Listener func(s *client.SolveStatus)
// Use the ctx to cancel the long running go routine.
// Make sure to run FinishFn to flush remaining build timings to the server _AFTER_ ctx has been canceled.
// NOTE: this means that you need to defer the FinishFn before deferring the cancel.
func NewProgress(ctx context.Context, buildID, token string, mode ProgressMode) (*Progress, FinishFn, error) {
func NewProgress(ctx context.Context, buildID, token string, mode ProgressMode, p *progress.Printer) (*Progress, FinishFn, error) {
// Buffer up to 1024 vertex slices before blocking the build.
const channelBufferSize = 1024
p, err := progress.NewPrinter(ctx, os.Stderr, os.Stderr, mode.String())
if err != nil {
return nil, func() {}, err
}

progress := &Progress{
buildID: buildID,
Expand Down

0 comments on commit 9f2ed61

Please sign in to comment.