Merge pull request #1433 from hinshun/session-hijack
Allow sessions to hijack the connection outside of a solvev0.8
commit
226a5db9ad
|
@ -11,6 +11,8 @@ import (
|
||||||
"github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc"
|
"github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc"
|
||||||
controlapi "github.com/moby/buildkit/api/services/control"
|
controlapi "github.com/moby/buildkit/api/services/control"
|
||||||
"github.com/moby/buildkit/client/connhelper"
|
"github.com/moby/buildkit/client/connhelper"
|
||||||
|
"github.com/moby/buildkit/session"
|
||||||
|
"github.com/moby/buildkit/session/grpchijack"
|
||||||
"github.com/moby/buildkit/util/appdefaults"
|
"github.com/moby/buildkit/util/appdefaults"
|
||||||
opentracing "github.com/opentracing/opentracing-go"
|
opentracing "github.com/opentracing/opentracing-go"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
@ -80,6 +82,10 @@ func (c *Client) controlClient() controlapi.ControlClient {
|
||||||
return controlapi.NewControlClient(c.conn)
|
return controlapi.NewControlClient(c.conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) Dialer() session.Dialer {
|
||||||
|
return grpchijack.Dialer(c.controlClient())
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) Close() error {
|
func (c *Client) Close() error {
|
||||||
return c.conn.Close()
|
return c.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,6 +115,12 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
|
||||||
}
|
}
|
||||||
|
|
||||||
var ex ExportEntry
|
var ex ExportEntry
|
||||||
|
if len(opt.Exports) > 1 {
|
||||||
|
return nil, errors.New("currently only single Exports can be specified")
|
||||||
|
}
|
||||||
|
if len(opt.Exports) == 1 {
|
||||||
|
ex = opt.Exports[0]
|
||||||
|
}
|
||||||
|
|
||||||
if !opt.SessionPreInitialized {
|
if !opt.SessionPreInitialized {
|
||||||
if len(syncedDirs) > 0 {
|
if len(syncedDirs) > 0 {
|
||||||
|
@ -125,13 +131,6 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
|
||||||
s.Allow(a)
|
s.Allow(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(opt.Exports) > 1 {
|
|
||||||
return nil, errors.New("currently only single Exports can be specified")
|
|
||||||
}
|
|
||||||
if len(opt.Exports) == 1 {
|
|
||||||
ex = opt.Exports[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ex.Type {
|
switch ex.Type {
|
||||||
case ExporterLocal:
|
case ExporterLocal:
|
||||||
if ex.Output != nil {
|
if ex.Output != nil {
|
||||||
|
|
Loading…
Reference in New Issue