mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			135 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package client
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"io"
 | 
						|
 | 
						|
	"github.com/moby/buildkit/client/llb"
 | 
						|
	"github.com/moby/buildkit/solver/pb"
 | 
						|
	"github.com/moby/buildkit/util/apicaps"
 | 
						|
	digest "github.com/opencontainers/go-digest"
 | 
						|
	specs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
						|
	fstypes "github.com/tonistiigi/fsutil/types"
 | 
						|
)
 | 
						|
 | 
						|
type Client interface {
 | 
						|
	Solve(ctx context.Context, req SolveRequest) (*Result, error)
 | 
						|
	ResolveImageConfig(ctx context.Context, ref string, opt llb.ResolveImageConfigOpt) (digest.Digest, []byte, error)
 | 
						|
	BuildOpts() BuildOpts
 | 
						|
	Inputs(ctx context.Context) (map[string]llb.State, error)
 | 
						|
	NewContainer(ctx context.Context, req NewContainerRequest) (Container, error)
 | 
						|
}
 | 
						|
 | 
						|
// NewContainerRequest encapsulates the requirements for a client to define a
 | 
						|
// new container, without defining the initial process.
 | 
						|
type NewContainerRequest struct {
 | 
						|
	Mounts      []Mount
 | 
						|
	NetMode     pb.NetMode
 | 
						|
	Platform    *pb.Platform
 | 
						|
	Constraints *pb.WorkerConstraints
 | 
						|
}
 | 
						|
 | 
						|
// Mount allows clients to specify a filesystem mount. A Reference to a
 | 
						|
// previously solved Result is required.
 | 
						|
type Mount struct {
 | 
						|
	Selector  string
 | 
						|
	Dest      string
 | 
						|
	ResultID  string
 | 
						|
	Ref       Reference
 | 
						|
	Readonly  bool
 | 
						|
	MountType pb.MountType
 | 
						|
	CacheOpt  *pb.CacheOpt
 | 
						|
	SecretOpt *pb.SecretOpt
 | 
						|
	SSHOpt    *pb.SSHOpt
 | 
						|
}
 | 
						|
 | 
						|
// Container is used to start new processes inside a container and release the
 | 
						|
// container resources when done.
 | 
						|
type Container interface {
 | 
						|
	Start(context.Context, StartRequest) (ContainerProcess, error)
 | 
						|
	Release(context.Context) error
 | 
						|
}
 | 
						|
 | 
						|
// StartRequest encapsulates the arguments to define a process within a
 | 
						|
// container.
 | 
						|
type StartRequest struct {
 | 
						|
	Args           []string
 | 
						|
	Env            []string
 | 
						|
	User           string
 | 
						|
	Cwd            string
 | 
						|
	Tty            bool
 | 
						|
	Stdin          io.ReadCloser
 | 
						|
	Stdout, Stderr io.WriteCloser
 | 
						|
	SecurityMode   pb.SecurityMode
 | 
						|
}
 | 
						|
 | 
						|
// WinSize is same as executor.WinSize, copied here to prevent circular package
 | 
						|
// dependencies.
 | 
						|
type WinSize struct {
 | 
						|
	Rows uint32
 | 
						|
	Cols uint32
 | 
						|
}
 | 
						|
 | 
						|
// ContainerProcess represents a process within a container.
 | 
						|
type ContainerProcess interface {
 | 
						|
	Wait() error
 | 
						|
	Resize(ctx context.Context, size WinSize) error
 | 
						|
	// TODO Signal(ctx context.Context, sig os.Signal)
 | 
						|
}
 | 
						|
 | 
						|
type Reference interface {
 | 
						|
	ToState() (llb.State, error)
 | 
						|
	ReadFile(ctx context.Context, req ReadRequest) ([]byte, error)
 | 
						|
	StatFile(ctx context.Context, req StatRequest) (*fstypes.Stat, error)
 | 
						|
	ReadDir(ctx context.Context, req ReadDirRequest) ([]*fstypes.Stat, error)
 | 
						|
}
 | 
						|
 | 
						|
type ReadRequest struct {
 | 
						|
	Filename string
 | 
						|
	Range    *FileRange
 | 
						|
}
 | 
						|
 | 
						|
type FileRange struct {
 | 
						|
	Offset int
 | 
						|
	Length int
 | 
						|
}
 | 
						|
 | 
						|
type ReadDirRequest struct {
 | 
						|
	Path           string
 | 
						|
	IncludePattern string
 | 
						|
}
 | 
						|
 | 
						|
type StatRequest struct {
 | 
						|
	Path string
 | 
						|
}
 | 
						|
 | 
						|
// SolveRequest is same as frontend.SolveRequest but avoiding dependency
 | 
						|
type SolveRequest struct {
 | 
						|
	Evaluate       bool
 | 
						|
	Definition     *pb.Definition
 | 
						|
	Frontend       string
 | 
						|
	FrontendOpt    map[string]string
 | 
						|
	FrontendInputs map[string]*pb.Definition
 | 
						|
	CacheImports   []CacheOptionsEntry
 | 
						|
}
 | 
						|
 | 
						|
type CacheOptionsEntry struct {
 | 
						|
	Type  string
 | 
						|
	Attrs map[string]string
 | 
						|
}
 | 
						|
 | 
						|
type WorkerInfo struct {
 | 
						|
	ID        string
 | 
						|
	Labels    map[string]string
 | 
						|
	Platforms []specs.Platform
 | 
						|
}
 | 
						|
 | 
						|
type BuildOpts struct {
 | 
						|
	Opts      map[string]string
 | 
						|
	SessionID string
 | 
						|
	Workers   []WorkerInfo
 | 
						|
	Product   string
 | 
						|
	LLBCaps   apicaps.CapSet
 | 
						|
	Caps      apicaps.CapSet
 | 
						|
}
 |