package client

import "github.com/moby/buildkit/client"

Index

Constants

const (
	ExporterImage  = "image"
	ExporterLocal  = "local"
	ExporterTar    = "tar"
	ExporterOCI    = "oci"
	ExporterDocker = "docker"
)

Variables

var PruneAll = pruneOptionFunc(func(pi *PruneInfo) {
	pi.All = true
})

Types

type BuildkitVersion

type BuildkitVersion struct {
	Package  string `json:"package"`
	Version  string `json:"version"`
	Revision string `json:"revision"`
}

type CDIDevice

type CDIDevice struct {
	Name        string            `json:"name"`
	AutoAllow   bool              `json:"autoAllow"`
	Annotations map[string]string `json:"annotations"`
	OnDemand    bool              `json:"onDemand"`
}

type CacheOptionsEntry

type CacheOptionsEntry struct {
	Type  string
	Attrs map[string]string
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func New

func New(ctx context.Context, address string, opts ...ClientOpt) (*Client, error)

New returns a new buildkit client. Address can be empty for the system-default address.

func (*Client) Build

func (c *Client) Build(ctx context.Context, opt SolveOpt, product string, buildFunc gateway.BuildFunc, statusChan chan *SolveStatus) (*SolveResponse, error)

func (*Client) Close

func (c *Client) Close() error

func (*Client) ContentClient

func (c *Client) ContentClient() contentapi.ContentClient

func (*Client) ControlClient

func (c *Client) ControlClient() controlapi.ControlClient

func (*Client) Dialer

func (c *Client) Dialer() session.Dialer

func (*Client) DiskUsage

func (c *Client) DiskUsage(ctx context.Context, opts ...DiskUsageOption) ([]*UsageInfo, error)

func (*Client) GatewayClientForBuild

func (c *Client) GatewayClientForBuild(buildid string) gatewayapi.LLBBridgeClient

func (*Client) Info

func (c *Client) Info(ctx context.Context) (*Info, error)

func (*Client) ListWorkers

func (c *Client) ListWorkers(ctx context.Context, opts ...ListWorkersOption) ([]*WorkerInfo, error)

ListWorkers lists all active workers

func (*Client) Prune

func (c *Client) Prune(ctx context.Context, ch chan UsageInfo, opts ...PruneOption) error

func (*Client) Solve

func (c *Client) Solve(ctx context.Context, def *llb.Definition, opt SolveOpt, statusChan chan *SolveStatus) (*SolveResponse, error)

Solve calls Solve on the controller. def must be nil if (and only if) opt.Frontend is set.

func (*Client) Wait

func (c *Client) Wait(ctx context.Context) error

type ClientOpt

type ClientOpt interface {
	// contains filtered or unexported methods
}

func WithContextDialer

func WithContextDialer(df func(context.Context, string) (net.Conn, error)) ClientOpt

func WithCredentials

func WithCredentials(cert, key string) ClientOpt

WithCredentials configures the TLS parameters of the client. Arguments: * cert: specifies the filepath of the client certificate * key: specifies the filepath of the client key

func WithGRPCDialOption

func WithGRPCDialOption(opt grpc.DialOption) ClientOpt

func WithServerConfig

func WithServerConfig(serverName, caCert string) ClientOpt

WithServerConfig configures the TLS parameters to connect to the server. Arguments: * serverName: specifies the server name to verify the hostname * caCert: specifies the filepath of the CA certificate

func WithServerConfigSystem

func WithServerConfigSystem(serverName string) ClientOpt

WithServerConfigSystem configures the TLS parameters to connect to the server, using the system's certificate pool.

func WithSessionDialer

func WithSessionDialer(dialer func(context.Context, string, map[string][]string) (net.Conn, error)) ClientOpt

func WithTracerDelegate

func WithTracerDelegate(td TracerDelegate) ClientOpt

func WithTracerProvider

func WithTracerProvider(t trace.TracerProvider) ClientOpt

type DiskUsageInfo

type DiskUsageInfo struct {
	Filter []string
}

type DiskUsageOption

type DiskUsageOption interface {
	SetDiskUsageOption(*DiskUsageInfo)
}

type ExportEntry

type ExportEntry struct {
	Type      string
	Attrs     map[string]string
	Output    filesync.FileOutputFunc // for ExporterOCI and ExporterDocker
	OutputDir string                  // for ExporterLocal
}

type Filter

type Filter []string

func WithFilter

func WithFilter(f []string) Filter

func (Filter) SetDiskUsageOption

func (f Filter) SetDiskUsageOption(di *DiskUsageInfo)

func (Filter) SetListWorkersOption

func (f Filter) SetListWorkersOption(lwi *ListWorkersInfo)

func (Filter) SetPruneOption

func (f Filter) SetPruneOption(pi *PruneInfo)

type Info

type Info struct {
	BuildkitVersion BuildkitVersion `json:"buildkitVersion"`
}

type ListWorkersInfo

type ListWorkersInfo struct {
	Filter []string
}

ListWorkersInfo is a payload for worker list query

type ListWorkersOption

type ListWorkersOption interface {
	SetListWorkersOption(*ListWorkersInfo)
}

ListWorkersOption is an option for a worker list query

type PruneInfo

type PruneInfo struct {
	All          bool          `json:"all"`
	Filter       []string      `json:"filter"`
	KeepDuration time.Duration `json:"keepDuration"`

	ReservedSpace int64 `json:"reservedSpace"`
	MaxUsedSpace  int64 `json:"maxUsedSpace"`
	MinFreeSpace  int64 `json:"minFreeSpace"`
}

type PruneOption

type PruneOption interface {
	SetPruneOption(*PruneInfo)
}

func WithKeepOpt

func WithKeepOpt(duration time.Duration, reserved int64, max int64, free int64) PruneOption

type SolveOpt

type SolveOpt struct {
	Exports               []ExportEntry
	EnableSessionExporter bool
	LocalDirs             map[string]string // Deprecated: use LocalMounts
	LocalMounts           map[string]fsutil.FS
	OCIStores             map[string]content.Store
	SharedKey             string
	Frontend              string
	FrontendAttrs         map[string]string
	FrontendInputs        map[string]llb.State
	CacheExports          []CacheOptionsEntry
	CacheImports          []CacheOptionsEntry
	Session               []session.Attachable
	AllowedEntitlements   []string
	SharedSession         *session.Session // TODO: refactor to better session syncing
	SessionPreInitialized bool             // TODO: refactor to better session syncing
	Internal              bool
	SourcePolicy          *spb.Policy
	Ref                   string
}

type SolveResponse

type SolveResponse struct {
	// ExporterResponse is also used for CacheExporter
	ExporterResponse map[string]string
}

type SolveStatus

type SolveStatus struct {
	Vertexes []*Vertex        `json:"vertexes,omitempty"`
	Statuses []*VertexStatus  `json:"statuses,omitempty"`
	Logs     []*VertexLog     `json:"logs,omitempty"`
	Warnings []*VertexWarning `json:"warnings,omitempty"`
}

func NewSolveStatus

func NewSolveStatus(resp *controlapi.StatusResponse) *SolveStatus

func (*SolveStatus) Marshal

func (ss *SolveStatus) Marshal() (out []*controlapi.StatusResponse)

type TracerDelegate

type TracerDelegate interface {
	SetSpanExporter(context.Context, sdktrace.SpanExporter) error
}

type UsageInfo

type UsageInfo struct {
	ID      string `json:"id"`
	Mutable bool   `json:"mutable"`
	InUse   bool   `json:"inUse"`
	Size    int64  `json:"size"`

	CreatedAt   time.Time       `json:"createdAt"`
	LastUsedAt  *time.Time      `json:"lastUsedAt"`
	UsageCount  int             `json:"usageCount"`
	Parents     []string        `json:"parents"`
	Description string          `json:"description"`
	RecordType  UsageRecordType `json:"recordType"`
	Shared      bool            `json:"shared"`
}

type UsageRecordType

type UsageRecordType string
const (
	UsageRecordTypeInternal    UsageRecordType = "internal"
	UsageRecordTypeFrontend    UsageRecordType = "frontend"
	UsageRecordTypeLocalSource UsageRecordType = "source.local"
	UsageRecordTypeGitCheckout UsageRecordType = "source.git.checkout"
	UsageRecordTypeCacheMount  UsageRecordType = "exec.cachemount"
	UsageRecordTypeRegular     UsageRecordType = "regular"
)

type Vertex

type Vertex struct {
	Digest        digest.Digest     `json:"digest,omitempty"`
	Inputs        []digest.Digest   `json:"inputs,omitempty"`
	Name          string            `json:"name,omitempty"`
	Started       *time.Time        `json:"started,omitempty"`
	Completed     *time.Time        `json:"completed,omitempty"`
	Cached        bool              `json:"cached,omitempty"`
	Error         string            `json:"error,omitempty"`
	ProgressGroup *pb.ProgressGroup `json:"progressGroup,omitempty"`
}

type VertexLog

type VertexLog struct {
	Vertex    digest.Digest `json:"vertex,omitempty"`
	Stream    int           `json:"stream,omitempty"`
	Data      []byte        `json:"data"`
	Timestamp time.Time     `json:"timestamp"`
}

type VertexStatus

type VertexStatus struct {
	ID        string        `json:"id"`
	Vertex    digest.Digest `json:"vertex,omitempty"`
	Name      string        `json:"name,omitempty"`
	Total     int64         `json:"total,omitempty"`
	Current   int64         `json:"current"`
	Timestamp time.Time     `json:"timestamp,omitempty"`
	Started   *time.Time    `json:"started,omitempty"`
	Completed *time.Time    `json:"completed,omitempty"`
}

type VertexWarning

type VertexWarning struct {
	Vertex digest.Digest `json:"vertex,omitempty"`
	Level  int           `json:"level,omitempty"`
	Short  []byte        `json:"short,omitempty"`
	Detail [][]byte      `json:"detail,omitempty"`
	URL    string        `json:"url,omitempty"`

	SourceInfo *pb.SourceInfo `json:"sourceInfo,omitempty"`
	Range      []*pb.Range    `json:"range,omitempty"`
}

type WorkerInfo

type WorkerInfo struct {
	ID              string              `json:"id"`
	Labels          map[string]string   `json:"labels"`
	Platforms       []ocispecs.Platform `json:"platforms"`
	GCPolicy        []PruneInfo         `json:"gcPolicy"`
	BuildkitVersion BuildkitVersion     `json:"buildkitVersion"`
	CDIDevices      []CDIDevice         `json:"cdiDevices"`
}

WorkerInfo contains information about a worker

Source Files

build.go client.go diskusage.go exporters.go filter.go graph.go info.go prune.go solve.go status.go workers.go

Directories

PathSynopsis
client/buildid
client/connhelperPackage connhelper provides helpers for connecting to a remote daemon host with custom logic.
client/connhelper/dockercontainerPackage dockercontainer provides connhelper for docker-container://<container>
client/connhelper/kubepodPackage kubepod provides connhelper for kube-pod://<pod>
client/connhelper/nerdctlcontainerPackage nerdctlcontainer provides connhelper for nerdctl-container://<container>
client/connhelper/npipePackage npipe provides connhelper for npipe://<address>
client/connhelper/podmancontainerPackage podmancontainer provides connhelper for podman-container://<container>
client/connhelper/sshPackage ssh provides connhelper for ssh://<SSH URL>
client/llb
client/llb/imagemetaresolver
client/llb/llbbuild
client/llb/llbtest
client/llb/sourceresolver
client/ociindex
Version
v0.21.0 (latest)
Published
Apr 11, 2025
Platform
linux/amd64
Imports
57 packages
Last checked
7 hours ago

Tools for package owners.