package build

import "github.com/docker/buildx/build"

Index

Constants

const DockerfileLabel = "com.docker.image.source.entrypoint"

Variables

var ErrRestart = errors.New("build: restart")

Functions

func Build

func Build(ctx context.Context, nodes []builder.Node, opts map[string]Options, docker *dockerutil.Client, cfg *confutil.Config, w progress.Writer) (resp map[string]*client.SolveResponse, err error)

func BuildWithResultHandler

func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opts map[string]Options, docker *dockerutil.Client, cfg *confutil.Config, w progress.Writer, bh *Handler) (resp map[string]*client.SolveResponse, err error)

func CreateCaches

func CreateCaches(entries []*buildflags.CacheOptionsEntry) []client.CacheOptionsEntry

func CreateExports

func CreateExports(entries []*buildflags.ExportEntry) ([]client.ExportEntry, []string, error)

func CreateSSH

func CreateSSH(ssh []*buildflags.SSH) (session.Attachable, error)

func CreateSecrets

func CreateSecrets(secrets []*buildflags.Secret) (session.Attachable, error)

func Dial

func Dial(ctx context.Context, nodes []builder.Node, pw progress.Writer, platform *ocispecs.Platform) (net.Conn, error)

func IsRemoteURL

func IsRemoteURL(c string) bool

func ReadSourcePolicy

func ReadSourcePolicy() (*spb.Policy, error)

ReadSourcePolicy reads a source policy from a file. The file path is taken from EXPERIMENTAL_BUILDKIT_SOURCE_POLICY env var. if the env var is not set, this `returns nil, nil`

Types

type CallFunc

type CallFunc struct {
	Name         string
	Format       string
	IgnoreStatus bool
}

type Container

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

func NewContainer

func NewContainer(ctx context.Context, resultCtx *ResultHandle, cfg *InvokeConfig) (*Container, error)

func (*Container) Cancel

func (c *Container) Cancel()

func (*Container) Exec

func (c *Container) Exec(ctx context.Context, cfg *InvokeConfig, stdin io.ReadCloser, stdout io.WriteCloser, stderr io.WriteCloser) error

func (*Container) IsUnavailable

func (c *Container) IsUnavailable() bool

type Handler

type Handler struct {
	Evaluate func(ctx context.Context, c gateway.Client, res *gateway.Result) error
}

type Inputs

type Inputs struct {
	ContextPath      string
	DockerfilePath   string
	InStream         *SyncMultiReader
	ContextState     *llb.State
	DockerfileInline string
	NamedContexts    map[string]NamedContext
	// DockerfileMappingSrc and DockerfileMappingDst are filled in by the builder.
	DockerfileMappingSrc string
	DockerfileMappingDst string
}

type InvokeConfig

type InvokeConfig struct {
	Entrypoint []string
	Cmd        []string
	NoCmd      bool
	Env        []string
	User       string
	NoUser     bool
	Cwd        string
	NoCwd      bool
	Tty        bool
	Rollback   bool
	Initial    bool
	SuspendOn  SuspendOn
}

func (*InvokeConfig) NeedsDebug

func (cfg *InvokeConfig) NeedsDebug(err error) bool

type NamedContext

type NamedContext struct {
	Path  string
	State *llb.State
}

type Options

type Options struct {
	Inputs Inputs

	Ref                        string
	Allow                      []string
	Attests                    map[string]*string
	BuildArgs                  map[string]string
	CacheFrom                  []client.CacheOptionsEntry
	CacheTo                    []client.CacheOptionsEntry
	CgroupParent               string
	Exports                    []client.ExportEntry
	ExportsLocalPathsTemporary []string // should be removed after client.ExportEntry update in buildkit v0.19.0
	ExtraHosts                 []string
	Labels                     map[string]string
	NetworkMode                string
	NoCache                    bool
	NoCacheFilter              []string
	Platforms                  []ocispecs.Platform
	Pull                       bool
	SecretSpecs                buildflags.Secrets
	SSHSpecs                   []*buildflags.SSH
	ShmSize                    opts.MemBytes
	Tags                       []string
	Target                     string
	Ulimits                    *opts.UlimitOpt

	Session                []session.Attachable
	Linked                 bool // Linked marks this target as exclusively linked (not requested by the user).
	CallFunc               *CallFunc
	ProvenanceResponseMode confutil.MetadataProvenanceMode
	SourcePolicy           *spb.Policy
	GroupRef               string
}

type ResultHandle

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

ResultHandle is a build result with the client that built it.

func NewResultHandle

func NewResultHandle(ctx context.Context, c gateway.Client, res *gateway.Result, err error) *ResultHandle

NewResultHandle stores a gateway client, gateway result, and the error from an evaluate call if it is present.

This ResultHandle can be used to execute additional build steps in the same context as the build occurred, which can allow easy debugging of build failures and successes.

If the returned ResultHandle is not nil, the caller must call Done() on it.

func (*ResultHandle) Done

func (r *ResultHandle) Done()

func (*ResultHandle) NewContainer

func (r *ResultHandle) NewContainer(ctx context.Context, cfg *InvokeConfig) (gateway.Container, error)

type SuspendOn

type SuspendOn int
const (
	SuspendError SuspendOn = iota
	SuspendAlways
)

func (SuspendOn) DebugEnabled

func (s SuspendOn) DebugEnabled(err error) bool

type SyncMultiReader

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

func NewSyncMultiReader

func NewSyncMultiReader(source io.Reader) *SyncMultiReader

func (*SyncMultiReader) NewReadCloser

func (mr *SyncMultiReader) NewReadCloser() io.ReadCloser

func (*SyncMultiReader) Peek

func (mr *SyncMultiReader) Peek(n int) ([]byte, error)

func (*SyncMultiReader) Reset

func (mr *SyncMultiReader) Reset(dt []byte)

Source Files

build.go dial.go driver.go git.go invoke.go localstate.go opt.go provenance.go replicatedstream.go result.go url.go utils.go

Version
v0.25.0-rc1
Published
Jun 11, 2025
Platform
darwin/amd64
Imports
78 packages
Last checked
4 hours ago

Tools for package owners.