This commit adds Solve API to the controller. This receives a build definition, performs that build using ResultHandler held by that session. After Solve completes, the client can debug the result using other APIs including Invoke. Note that the ResultHandle provided by Solve overwrites the ResultHandle previously stored in that session (possibly generated by the past Build or Solve API call). Using this API, user can perform build-and-debugging loop on the same session. Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
35 lines
1.5 KiB
Go
35 lines
1.5 KiB
Go
package control
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
controllerapi "github.com/docker/buildx/controller/pb"
|
|
"github.com/docker/buildx/util/progress"
|
|
"github.com/moby/buildkit/client"
|
|
solverpb "github.com/moby/buildkit/solver/pb"
|
|
)
|
|
|
|
type BuildxController interface {
|
|
Build(ctx context.Context, options controllerapi.BuildOptions, in io.ReadCloser, progress progress.Writer) (ref string, resp *client.SolveResponse, err error)
|
|
// Invoke starts an IO session into the specified process.
|
|
// If pid doesn't matche to any running processes, it starts a new process with the specified config.
|
|
// If there is no container running or InvokeConfig.Rollback is speicfied, the process will start in a newly created container.
|
|
// NOTE: If needed, in the future, we can split this API into three APIs (NewContainer, NewProcess and Attach).
|
|
Invoke(ctx context.Context, ref, pid string, options controllerapi.InvokeConfig, ioIn io.ReadCloser, ioOut io.WriteCloser, ioErr io.WriteCloser) error
|
|
Kill(ctx context.Context) error
|
|
Close() error
|
|
List(ctx context.Context) (refs []string, _ error)
|
|
Disconnect(ctx context.Context, ref string) error
|
|
ListProcesses(ctx context.Context, ref string) (infos []*controllerapi.ProcessInfo, retErr error)
|
|
DisconnectProcess(ctx context.Context, ref, pid string) error
|
|
Inspect(ctx context.Context, ref string) (*controllerapi.InspectResponse, error)
|
|
Solve(ctx context.Context, ref string, def *solverpb.Definition, progress progress.Writer) error
|
|
}
|
|
|
|
type ControlOptions struct {
|
|
ServerConfig string
|
|
Root string
|
|
Detach bool
|
|
}
|