Documentation ¶
Index ¶
- Constants
- Variables
- func ForceNoOutput(m *mount)
- func MarshalConstraints(base, override *Constraints) (*pb.Op, *pb.OpMetadata)
- func Readonly(m *mount)
- func WriteTo(def *Definition, w io.Writer) error
- type CacheMountSharingMode
- type ChownOpt
- type ChownOption
- type Constraints
- type ConstraintsOpt
- func LocalUniqueID(v string) ConstraintsOpt
- func Platform(p ocispecs.Platform) ConstraintsOpt
- func ProgressGroup(id, name string, weak bool) ConstraintsOpt
- func Require(filters ...string) ConstraintsOpt
- func WithCaps(caps apicaps.CapSet) ConstraintsOpt
- func WithCustomName(name string) ConstraintsOpt
- func WithCustomNamef(name string, a ...interface{}) ConstraintsOpt
- func WithDescription(m map[string]string) ConstraintsOpt
- func WithExportCache() ConstraintsOpt
- func WithoutDefaultExportCache() ConstraintsOpt
- func WithoutExportCache() ConstraintsOpt
- type CopyInfo
- type CopyInput
- type CopyOption
- type CreatedTime
- type Definition
- type DefinitionOp
- func (d *DefinitionOp) Inputs() []Output
- func (d *DefinitionOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
- func (d *DefinitionOp) Output() Output
- func (d *DefinitionOp) ToInput(ctx context.Context, c *Constraints) (*pb.Input, error)
- func (d *DefinitionOp) Validate(context.Context, *Constraints) error
- func (d *DefinitionOp) Vertex(context.Context, *Constraints) Vertex
- type DiffOp
- type DiffType
- type DifferInfo
- type EnvList
- type ExecInfo
- type ExecOp
- func (e *ExecOp) AddMount(target string, source Output, opt ...MountOption) Output
- func (e *ExecOp) GetMount(target string) Output
- func (e *ExecOp) Inputs() (inputs []Output)
- func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
- func (e *ExecOp) Output() Output
- func (e *ExecOp) Validate(ctx context.Context, c *Constraints) error
- type ExecState
- type FileAction
- func (fa *FileAction) Copy(input CopyInput, src, dest string, opt ...CopyOption) *FileAction
- func (fa *FileAction) Mkdir(p string, m os.FileMode, opt ...MkdirOption) *FileAction
- func (fa *FileAction) Mkfile(p string, m os.FileMode, dt []byte, opt ...MkfileOption) *FileAction
- func (fa *FileAction) Rm(p string, opt ...RmOption) *FileAction
- func (fa *FileAction) WithState(s State) CopyInput
- type FileOp
- type GitInfo
- type GitOption
- type HTTPInfo
- type HTTPOption
- type HostIP
- type ImageInfo
- type ImageMetaResolver
- type ImageOption
- type KeyValue
- type LocalInfo
- type LocalOption
- type MarshalCache
- type MergeOp
- type MkdirInfo
- type MkdirOption
- type MkfileInfo
- type MkfileOption
- type MountInfo
- type MountOption
- type OCILayoutInfo
- type OCILayoutOption
- type Output
- type ProxyEnv
- type ResolveImageConfigOpt
- type ResolveImageConfigOptStore
- type ResolveMode
- type ResolverType
- type RmInfo
- type RmOption
- type RunOption
- func AddExtraHost(host string, ip net.IP) RunOption
- func AddMount(dest string, mountState State, opts ...MountOption) RunOption
- func AddSSHSocket(opts ...SSHOption) RunOption
- func AddSecret(dest string, opts ...SecretOption) RunOption
- func AddUlimit(name UlimitName, soft int64, hard int64) RunOption
- func Args(a []string) RunOption
- func ReadonlyRootFS() RunOption
- func Shlex(str string) RunOption
- func Shlexf(str string, v ...interface{}) RunOption
- func With(so ...StateOption) RunOption
- func WithCgroupParent(cp string) RunOption
- func WithProxy(ps ProxyEnv) RunOption
- type SSHInfo
- type SSHOption
- type SecretInfo
- type SecretOption
- type SourceLocation
- type SourceMap
- type SourceOp
- type State
- func Diff(lower, upper State, opts ...ConstraintsOpt) State
- func Git(url, ref string, opts ...GitOption) State
- func HTTP(url string, opts ...HTTPOption) State
- func Image(ref string, opts ...ImageOption) State
- func Local(name string, opts ...LocalOption) State
- func Merge(inputs []State, opts ...ConstraintsOpt) State
- func NewState(o Output) State
- func OCILayout(ref string, opts ...OCILayoutOption) State
- func Scratch() State
- func (s State) AddEnv(key, value string) State
- func (s State) AddEnvf(key, value string, v ...interface{}) State
- func (s State) AddExtraHost(host string, ip net.IP) State
- func (s State) AddUlimit(name UlimitName, soft int64, hard int64) State
- func (s State) Async(f func(context.Context, State, *Constraints) (State, error)) State
- func (s State) Dir(str string) State
- func (s State) Dirf(str string, v ...interface{}) State
- func (s State) Env(ctx context.Context, co ...ConstraintsOpt) ([]string, error)
- func (s State) File(a *FileAction, opts ...ConstraintsOpt) State
- func (s State) GetArgs(ctx context.Context, co ...ConstraintsOpt) ([]string, error)
- func (s State) GetDir(ctx context.Context, co ...ConstraintsOpt) (string, error)
- func (s State) GetEnv(ctx context.Context, key string, co ...ConstraintsOpt) (string, bool, error)
- func (s State) GetHostname(ctx context.Context, co ...ConstraintsOpt) (string, error)
- func (s State) GetNetwork(ctx context.Context, co ...ConstraintsOpt) (pb.NetMode, error)
- func (s State) GetPlatform(ctx context.Context, co ...ConstraintsOpt) (*ocispecs.Platform, error)
- func (s State) GetSecurity(ctx context.Context, co ...ConstraintsOpt) (pb.SecurityMode, error)
- func (s State) Hostname(v string) State
- func (s State) Marshal(ctx context.Context, co ...ConstraintsOpt) (*Definition, error)
- func (s State) Network(n pb.NetMode) State
- func (s State) Output() Output
- func (s State) Platform(p ocispecs.Platform) State
- func (s State) Reset(s2 State) State
- func (s State) Run(ro ...RunOption) ExecState
- func (s State) Security(n pb.SecurityMode) State
- func (s State) SetMarshalDefaults(co ...ConstraintsOpt) State
- func (s State) User(v string) State
- func (s State) Validate(ctx context.Context, c *Constraints) error
- func (s State) Value(ctx context.Context, k interface{}, co ...ConstraintsOpt) (interface{}, error)
- func (s State) With(so ...StateOption) State
- func (s State) WithCgroupParent(cp string) State
- func (s State) WithImageConfig(c []byte) (State, error)
- func (s State) WithOutput(o Output) State
- func (s State) WithValue(k, v interface{}) State
- type StateOption
- func AddEnv(key, value string) StateOption
- func AddEnvf(key, value string, v ...interface{}) StateOption
- func Dir(str string) StateOption
- func Dirf(str string, v ...interface{}) StateOption
- func Hostname(str string) StateOption
- func Network(v pb.NetMode) StateOption
- func Reset(other State) StateOption
- func Security(v pb.SecurityMode) StateOption
- func User(str string) StateOption
- type TmpfsInfo
- type TmpfsOption
- type UlimitName
- type UserOpt
- type Vertex
Constants ¶
const ( NetModeSandbox = pb.NetMode_UNSET NetModeHost = pb.NetMode_HOST NetModeNone = pb.NetMode_NONE )
const ( SecurityModeInsecure = pb.SecurityMode_INSECURE SecurityModeSandbox = pb.SecurityMode_SANDBOX )
Variables ¶
var ( LinuxAmd64 = Platform(ocispecs.Platform{OS: "linux", Architecture: "amd64"}) LinuxArmhf = Platform(ocispecs.Platform{OS: "linux", Architecture: "arm", Variant: "v7"}) LinuxArm = LinuxArmhf LinuxArmel = Platform(ocispecs.Platform{OS: "linux", Architecture: "arm", Variant: "v6"}) LinuxArm64 = Platform(ocispecs.Platform{OS: "linux", Architecture: "arm64"}) LinuxS390x = Platform(ocispecs.Platform{OS: "linux", Architecture: "s390x"}) LinuxPpc64 = Platform(ocispecs.Platform{OS: "linux", Architecture: "ppc64"}) LinuxPpc64le = Platform(ocispecs.Platform{OS: "linux", Architecture: "ppc64le"}) Darwin = Platform(ocispecs.Platform{OS: "darwin", Architecture: "amd64"}) Windows = Platform(ocispecs.Platform{OS: "windows", Architecture: "amd64"}) )
var IgnoreCache = constraintsOptFunc(func(c *Constraints) { c.Metadata.IgnoreCache = true })
var MarkImageInternal = imageOptionFunc(func(ii *ImageInfo) {
ii.RecordType = "internal"
})
var SSHOptional = sshOptionFunc(func(si *SSHInfo) { si.Optional = true })
var SecretOptional = secretOptionFunc(func(si *SecretInfo) { si.Optional = true })
Functions ¶
func ForceNoOutput ¶
func ForceNoOutput(m *mount)
func MarshalConstraints ¶
func MarshalConstraints(base, override *Constraints) (*pb.Op, *pb.OpMetadata)
Types ¶
type CacheMountSharingMode ¶
type CacheMountSharingMode int
const ( CacheMountPrivate CacheMountLocked )
type ChownOpt ¶
func (ChownOpt) SetCopyOption ¶
func (ChownOpt) SetMkdirOption ¶
func (ChownOpt) SetMkfileOption ¶
func (co ChownOpt) SetMkfileOption(mi *MkfileInfo)
type ChownOption ¶
type ChownOption interface { MkdirOption MkfileOption CopyOption }
func WithUIDGID ¶
func WithUIDGID(uid, gid int) ChownOption
func WithUser ¶
func WithUser(name string) ChownOption
type Constraints ¶
type Constraints struct { Platform *ocispecs.Platform WorkerConstraints []string Metadata pb.OpMetadata LocalUniqueID string Caps *apicaps.CapSet SourceLocations []*SourceLocation }
func NewConstraints ¶
func NewConstraints(co ...ConstraintsOpt) *Constraints
type ConstraintsOpt ¶
type ConstraintsOpt interface { SetConstraintsOption(*Constraints) RunOption LocalOption HTTPOption ImageOption GitOption OCILayoutOption }
func LocalUniqueID ¶
func LocalUniqueID(v string) ConstraintsOpt
func Platform ¶
func Platform(p ocispecs.Platform) ConstraintsOpt
func ProgressGroup ¶
func ProgressGroup(id, name string, weak bool) ConstraintsOpt
func Require ¶
func Require(filters ...string) ConstraintsOpt
func WithCaps ¶
func WithCaps(caps apicaps.CapSet) ConstraintsOpt
WithCaps exposes supported LLB caps to the marshaler
func WithCustomName ¶
func WithCustomName(name string) ConstraintsOpt
func WithCustomNamef ¶
func WithCustomNamef(name string, a ...interface{}) ConstraintsOpt
func WithDescription ¶
func WithDescription(m map[string]string) ConstraintsOpt
func WithExportCache ¶
func WithExportCache() ConstraintsOpt
WithExportCache forces results for this vertex to be exported with the cache
func WithoutDefaultExportCache ¶
func WithoutDefaultExportCache() ConstraintsOpt
WithoutDefaultExportCache resets the cache export for the vertex to use the default defined by the build configuration.
func WithoutExportCache ¶
func WithoutExportCache() ConstraintsOpt
WithoutExportCache sets results for this vertex to be not exported with the cache
type CopyInfo ¶
type CopyInfo struct { Mode *os.FileMode FollowSymlinks bool CopyDirContentsOnly bool IncludePatterns []string ExcludePatterns []string AttemptUnpack bool CreateDestPath bool AllowWildcard bool AllowEmptyWildcard bool ChownOpt *ChownOpt CreatedTime *time.Time }
func (*CopyInfo) SetCopyOption ¶
type CopyInput ¶
type CopyInput interface {
// contains filtered or unexported methods
}
CopyInput is either llb.State or *FileActionWithState It is used by Copy to to specify the source of the copy operation.
type CopyOption ¶
type CopyOption interface {
SetCopyOption(*CopyInfo)
}
type CreatedTime ¶
func WithCreatedTime ¶
func WithCreatedTime(t time.Time) CreatedTime
func (CreatedTime) SetCopyOption ¶
func (c CreatedTime) SetCopyOption(mi *CopyInfo)
func (CreatedTime) SetMkdirOption ¶
func (c CreatedTime) SetMkdirOption(mi *MkdirInfo)
func (CreatedTime) SetMkfileOption ¶
func (c CreatedTime) SetMkfileOption(mi *MkfileInfo)
type Definition ¶
type Definition struct { Def [][]byte Metadata map[digest.Digest]pb.OpMetadata Source *pb.Source Constraints *Constraints }
Definition is the LLB definition structure with per-vertex metadata entries Corresponds to the Definition structure defined in solver/pb.Definition.
func (*Definition) FromPB ¶
func (def *Definition) FromPB(x *pb.Definition)
func (*Definition) ToPB ¶
func (def *Definition) ToPB() *pb.Definition
type DefinitionOp ¶
type DefinitionOp struct { MarshalCache // contains filtered or unexported fields }
DefinitionOp implements llb.Vertex using a marshalled definition.
For example, after marshalling a LLB state and sending over the wire, the LLB state can be reconstructed from the definition.
func NewDefinitionOp ¶
func NewDefinitionOp(def *pb.Definition) (*DefinitionOp, error)
NewDefinitionOp returns a new operation from a marshalled definition.
func (*DefinitionOp) Inputs ¶
func (d *DefinitionOp) Inputs() []Output
func (*DefinitionOp) Marshal ¶
func (d *DefinitionOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
func (*DefinitionOp) Output ¶
func (d *DefinitionOp) Output() Output
func (*DefinitionOp) ToInput ¶
func (d *DefinitionOp) ToInput(ctx context.Context, c *Constraints) (*pb.Input, error)
func (*DefinitionOp) Validate ¶
func (d *DefinitionOp) Validate(context.Context, *Constraints) error
func (*DefinitionOp) Vertex ¶
func (d *DefinitionOp) Vertex(context.Context, *Constraints) Vertex
type DiffOp ¶
type DiffOp struct { MarshalCache // contains filtered or unexported fields }
func NewDiff ¶
func NewDiff(lower, upper State, c Constraints) *DiffOp
func (*DiffOp) Marshal ¶
func (m *DiffOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
type DiffType ¶
type DiffType string
const ( // DiffNone will do no file comparisons, all files in the Local source will // be retransmitted. DiffNone DiffType = pb.AttrLocalDifferNone // DiffMetadata will compare file metadata (size, modified time, mode, owner, // group, device and link name) to determine if the files in the Local source need // to be retransmitted. This is the default behavior. DiffMetadata DiffType = pb.AttrLocalDifferMetadata )
type DifferInfo ¶
type ExecOp ¶
type ExecOp struct { MarshalCache // contains filtered or unexported fields }
func NewExecOp ¶
func NewExecOp(base State, proxyEnv *ProxyEnv, readOnly bool, c Constraints) *ExecOp
func (*ExecOp) AddMount ¶
func (e *ExecOp) AddMount(target string, source Output, opt ...MountOption) Output
func (*ExecOp) Marshal ¶
func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
type ExecState ¶
type ExecState struct { State // contains filtered or unexported fields }
type FileAction ¶
type FileAction struct {
// contains filtered or unexported fields
}
FileAction is used to specify a file operation on a State. It can be used to create a directory, create a file, or remove a file, etc. This is used by State.File Typically a FileAction is created by calling one of the helper functions such as Mkdir, Copy, Rm, Mkfile
func Copy ¶
func Copy(input CopyInput, src, dest string, opts ...CopyOption) *FileAction
Copy produces a FileAction which copies a file or directory from the source to the destination. The "input" parameter is the contents to copy from. "src" is the path to copy from within the "input". "dest" is the path to copy to within the destination (the state being operated on). See CopyInput for the valid types of input.
Example:
st := llb.Local(".") llb.Scratch().File(llb.Copy(st, "/foo", "/bar"))
The example copies the local (client) directory "./foo" to a new empty directory at /bar.
Note: Copying directories can have different behavior based on if the destination exists or not. When the destination already exists, the contents of the source directory is copied underneath the destination, including the directory itself. You may need to supply a copy option to copy the dir contents only. You may also need to pass in a CopyOption which creates parent directories if they do not exist.
See CopyOption for more details on what options are available.
func Mkdir ¶
func Mkdir(p string, m os.FileMode, opt ...MkdirOption) *FileAction
Mkdir creates a FileAction which creates a directory at the given path. Example:
llb.Scratch().File(llb.Mkdir("/foo", 0755))
func Mkfile ¶
func Mkfile(p string, m os.FileMode, dt []byte, opts ...MkfileOption) *FileAction
Mkfile creates a FileAction which creates a file at the given path with the provided contents. Example:
llb.Scratch().File(llb.Mkfile("/foo", 0644, []byte("hello world!")))
func Rm ¶
func Rm(p string, opts ...RmOption) *FileAction
Rm creates a FileAction which removes a file or directory at the given path. Example:
llb.Scratch().File(Mkfile("/foo", 0644, []byte("not around for long..."))).File(llb.Rm("/foo"))
func (*FileAction) Copy ¶
func (fa *FileAction) Copy(input CopyInput, src, dest string, opt ...CopyOption) *FileAction
func (*FileAction) Mkdir ¶
func (fa *FileAction) Mkdir(p string, m os.FileMode, opt ...MkdirOption) *FileAction
func (*FileAction) Mkfile ¶
func (fa *FileAction) Mkfile(p string, m os.FileMode, dt []byte, opt ...MkfileOption) *FileAction
func (*FileAction) Rm ¶
func (fa *FileAction) Rm(p string, opt ...RmOption) *FileAction
func (*FileAction) WithState ¶
func (fa *FileAction) WithState(s State) CopyInput
type FileOp ¶
type FileOp struct { MarshalCache // contains filtered or unexported fields }
func NewFileOp ¶
func NewFileOp(s State, action *FileAction, c Constraints) *FileOp
func (*FileOp) Marshal ¶
func (f *FileOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
type GitOption ¶
type GitOption interface {
SetGitOption(*GitInfo)
}
func AuthHeaderSecret ¶
func AuthTokenSecret ¶
func KeepGitDir ¶
func KeepGitDir() GitOption
func KnownSSHHosts ¶
func MountSSHSock ¶
type HTTPOption ¶
type HTTPOption interface {
SetHTTPOption(*HTTPInfo)
}
func Checksum ¶
func Checksum(dgst digest.Digest) HTTPOption
func Chmod ¶
func Chmod(perm os.FileMode) HTTPOption
func Chown ¶
func Chown(uid, gid int) HTTPOption
func Filename ¶
func Filename(name string) HTTPOption
type ImageInfo ¶
type ImageInfo struct { RecordType string // contains filtered or unexported fields }
type ImageMetaResolver ¶
type ImageMetaResolver interface {
ResolveImageConfig(ctx context.Context, ref string, opt ResolveImageConfigOpt) (string, digest.Digest, []byte, error)
}
ImageMetaResolver can resolve image config metadata from a reference
type ImageOption ¶
type ImageOption interface {
SetImageOption(*ImageInfo)
}
func ResolveDigest ¶
func ResolveDigest(v bool) ImageOption
ResolveDigest uses the meta resolver to update the ref of image with full digest before marshaling. This makes image ref immutable and is recommended if you want to make sure meta resolver data matches the image used during the build.
func WithLayerLimit ¶
func WithLayerLimit(l int) ImageOption
func WithMetaResolver ¶
func WithMetaResolver(mr ImageMetaResolver) ImageOption
WithMetaResolver adds a metadata resolver to an image
type LocalInfo ¶
type LocalInfo struct { SessionID string IncludePatterns string ExcludePatterns string FollowPaths string Differ DifferInfo // contains filtered or unexported fields }
type LocalOption ¶
type LocalOption interface {
SetLocalOption(*LocalInfo)
}
func Differ ¶
func Differ(t DiffType, required bool) LocalOption
func ExcludePatterns ¶
func ExcludePatterns(p []string) LocalOption
func FollowPaths ¶
func FollowPaths(p []string) LocalOption
func IncludePatterns ¶
func IncludePatterns(p []string) LocalOption
func SessionID ¶
func SessionID(id string) LocalOption
func SharedKeyHint ¶
func SharedKeyHint(h string) LocalOption
type MarshalCache ¶
type MarshalCache struct {
// contains filtered or unexported fields
}
func (*MarshalCache) Cached ¶
func (mc *MarshalCache) Cached(c *Constraints) bool
func (*MarshalCache) Load ¶
func (mc *MarshalCache) Load() (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
func (*MarshalCache) Store ¶
func (mc *MarshalCache) Store(dt []byte, md *pb.OpMetadata, srcs []*SourceLocation, c *Constraints)
type MergeOp ¶
type MergeOp struct { MarshalCache // contains filtered or unexported fields }
func NewMerge ¶
func NewMerge(inputs []State, c Constraints) *MergeOp
func (*MergeOp) Marshal ¶
func (m *MergeOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
type MkdirInfo ¶
func (*MkdirInfo) SetMkdirOption ¶
type MkdirOption ¶
type MkdirOption interface {
SetMkdirOption(*MkdirInfo)
}
func WithParents ¶
func WithParents(b bool) MkdirOption
WithParents is an option for Mkdir which creates parent directories if they do not exist.
type MkfileInfo ¶
func (*MkfileInfo) SetMkfileOption ¶
func (mi *MkfileInfo) SetMkfileOption(mi2 *MkfileInfo)
type MkfileOption ¶
type MkfileOption interface {
SetMkfileOption(*MkfileInfo)
}
type MountInfo ¶
type MountInfo struct { Target string Source Output Opts []MountOption }
type MountOption ¶
type MountOption func(*mount)
func AsPersistentCacheDir ¶
func AsPersistentCacheDir(id string, sharing CacheMountSharingMode) MountOption
func SourcePath ¶
func SourcePath(src string) MountOption
func Tmpfs ¶
func Tmpfs(opts ...TmpfsOption) MountOption
type OCILayoutInfo ¶
type OCILayoutInfo struct {
// contains filtered or unexported fields
}
type OCILayoutOption ¶
type OCILayoutOption interface {
SetOCILayoutOption(*OCILayoutInfo)
}
func OCILayerLimit ¶
func OCILayerLimit(limit int) OCILayoutOption
func OCIStore ¶
func OCIStore(sessionID string, storeID string) OCILayoutOption
type Output ¶
type Output interface { ToInput(context.Context, *Constraints) (*pb.Input, error) Vertex(context.Context, *Constraints) Vertex }
type ResolveImageConfigOpt ¶
type ResolveImageConfigOpt struct { ResolverType Platform *ocispecs.Platform ResolveMode string LogName string Store ResolveImageConfigOptStore SourcePolicies []*spb.Policy }
type ResolveMode ¶
type ResolveMode int
const ( ResolveModeDefault ResolveMode = iota ResolveModeForcePull ResolveModePreferLocal )
func (ResolveMode) SetImageOption ¶
func (r ResolveMode) SetImageOption(ii *ImageInfo)
func (ResolveMode) String ¶
func (r ResolveMode) String() string
type ResolverType ¶
type ResolverType int
const ( ResolverTypeRegistry ResolverType = iota ResolverTypeOCILayout )
type RmInfo ¶
func (*RmInfo) SetRmOption ¶
type RmOption ¶
type RmOption interface {
SetRmOption(*RmInfo)
}
func WithAllowNotFound ¶
func WithAllowWildcard ¶
type RunOption ¶
type RunOption interface {
SetRunOption(es *ExecInfo)
}
func AddSSHSocket ¶
func AddSecret ¶
func AddSecret(dest string, opts ...SecretOption) RunOption
AddSecret is a RunOption that adds a secret to the exec.
func ReadonlyRootFS ¶
func ReadonlyRootFS() RunOption
ReadonlyRootFS sets the execs's root filesystem to be read-only.
func With ¶
func With(so ...StateOption) RunOption
func WithCgroupParent ¶
type SSHOption ¶
type SSHOption interface {
SetSSHOption(*SSHInfo)
}
func SSHSocketOpt ¶
func SSHSocketTarget ¶
type SecretInfo ¶
type SecretOption ¶
type SecretOption interface {
SetSecretOption(*SecretInfo)
}
func SecretAsEnv ¶
func SecretAsEnv(v bool) SecretOption
SecretAsEnv defines if the secret should be added as an environment variable
func SecretFileOpt ¶
func SecretFileOpt(uid, gid, mode int) SecretOption
SecretFileOpt sets the secret's target file uid, gid and permissions.
func SecretID ¶
func SecretID(id string) SecretOption
type SourceLocation ¶
type SourceMap ¶
type SourceMap struct { State *State Definition *Definition Filename string // Language should use names defined in https://github.com/github/linguist/blob/v7.24.1/lib/linguist/languages.yml Language string Data []byte }
SourceMap maps a source file/location to an LLB state/definition. SourceMaps are used to provide information for debugging and helpful error messages to the user. As an example, lets say you have a Dockerfile with the following content:
FROM alpine RUN exit 1
When the "RUN" statement exits with a non-zero exit code devkit will treat it as an error and is able to provide the user with a helpful error message pointing to exactly the line in the Dockerfile that caused the error.
func NewSourceMap ¶
type SourceOp ¶
type SourceOp struct { MarshalCache // contains filtered or unexported fields }
func (*SourceOp) Marshal ¶
func (s *SourceOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error)
type State ¶
type State struct {
// contains filtered or unexported fields
}
State represents all operations that must be done to produce a given output. States are immutable, and all operations return a new state linked to the previous one. State is the core type of the LLB API and is used to build a graph of operations. The graph is then marshaled into a definition that can be executed by a backend (such as devkitd).
Operations performed on a State are executed lazily after the entire state graph is marshalled and sent to the backend.
func Diff ¶
func Diff(lower, upper State, opts ...ConstraintsOpt) State
Diff returns a state that represents the diff of the lower and upper states. The returned State is useful for use with Merge where you can merge the lower state with the diff.
func Git ¶
Git returns a state that represents a git repository. Example:
st := llb.Git("https://github.com/khulnasoft/devkit.git", "v0.11.6")
The example fetches the v0.11.6 tag of the devkit repository. You can also use a commit hash or a branch name.
Other URL formats are supported such as "git@github.com:khulnasoft/devkit.git", "git://...", "ssh://..." Formats that utilize SSH may need to supply credentials as a GitOption. You may need to check the source code for a full list of supported formats.
By default the git repository is cloned with `--depth=1` to reduce the amount of data downloaded. Additionally the ".git" directory is removed after the clone, you can keep ith with the KeepGitDir GitOption.
func HTTP ¶
func HTTP(url string, opts ...HTTPOption) State
func Image ¶
func Image(ref string, opts ...ImageOption) State
Image returns a state that represents a docker image in a registry. Example:
st := llb.Image("busybox:latest")
func Local ¶
func Local(name string, opts ...LocalOption) State
Local returns a state that represents a directory local to the client.
func Merge ¶
func Merge(inputs []State, opts ...ConstraintsOpt) State
Merge merges multiple states into a single state. This is useful in conjunction with Diff to create set of patches which are independent of each other to a base state without affecting the cache of other merged states. As an example, lets say you have a rootfs with the following directories:
/ /bin /etc /opt /tmp
Now lets say you want to copy a directory /etc/foo from one state and a binary /bin/bar from another state. Copy makes a duplicate of file on top of another directory. Merge creates a directory whose contents is an overlay of 2 states on top of each other.
With "Merge" you can do this:
fooState := Diff(rootfs, fooState) barState := Diff(rootfs, barState)
Then merge the results with:
Merge(rootfs, fooDiff, barDiff)
The resulting state will have both /etc/foo and /bin/bar, but because Merge was used, changing the contents of "fooDiff" does not require copying "barDiff" again.
func OCILayout ¶
func OCILayout(ref string, opts ...OCILayoutOption) State
func (State) AddEnv ¶
AddEnv returns a new State with the provided environment variable set. See AddEnv
func (State) AddEnvf ¶
AddEnvf is the same as State.AddEnv but with a format string.
func (State) AddExtraHost ¶
AddExtraHost adds a host name to IP mapping to any containers created from this state.
func (State) AddUlimit ¶
func (s State) AddUlimit(name UlimitName, soft int64, hard int64) State
AddUlimit sets the hard/soft for the given ulimit. The ulimit is applied to containers created from this state. Ulimits are Linux specific and only applies to containers created from this state such as via `[State.Run]` Ulimits do not apply to image configs.
func (State) File ¶
func (s State) File(a *FileAction, opts ...ConstraintsOpt) State
File performs a file operation on the current state. See FileAction for details on the operations that can be performed.
func (State) GetHostname ¶
GetHostname returns the hostname set on the state. See Hostname for more details.
func (State) GetNetwork ¶
GetNetwork returns the network mode for the state.
func (State) GetPlatform ¶
GetPlatform returns the platform for the state.
func (State) GetSecurity ¶
func (s State) GetSecurity(ctx context.Context, co ...ConstraintsOpt) (pb.SecurityMode, error)
GetSecurity returns the security mode for the state.
func (State) Marshal ¶
func (s State) Marshal(ctx context.Context, co ...ConstraintsOpt) (*Definition, error)
Marshal marshals the state and all its parents into a Definition.
func (State) Network ¶
Network sets the network mode for the state. Network modes are used by State.Run to determine the network mode used when running the container. Network modes are not applied to image configs.
func (State) Platform ¶
Platform sets the platform for the state. Platforms are used to determine image variants to pull and run as well as the platform metadata to set on the image config.
func (State) Reset ¶
Reset is used to return a new State with all of the current state and the provided State as the parent. In effect you can think of this as creating a new state with all the output from the current state but reparented to the provided state. See Reset for more details.
func (State) Run ¶
Run performs the command specified by the arguments within the context of the current State. The command is executed as a container with the State's filesystem as the root filesystem. As such any command you run must be present in the State's filesystem. Constraints such as [State.Ulimit], [State.ParentCgroup], State.Network, etc. are applied to the container.
Run is useful when none of the LLB ops are sufficient for the operation that you want to perform.
func (State) Security ¶
func (s State) Security(n pb.SecurityMode) State
Security sets the security mode for the state. Security modes are used by State.Run to the privileges that processes in the container will run with. Security modes are not applied to image configs.
func (State) SetMarshalDefaults ¶
func (s State) SetMarshalDefaults(co ...ConstraintsOpt) State
func (State) Validate ¶
func (s State) Validate(ctx context.Context, c *Constraints) error
Validate validates the state. This validation, unlike most other operations on State, is not lazily performed.
func (State) Value ¶
func (s State) Value(ctx context.Context, k interface{}, co ...ConstraintsOpt) (interface{}, error)
func (State) With ¶
func (s State) With(so ...StateOption) State
With applies [StateOption]s to the State. Each applied StateOption creates a new State object with the previous as its parent.
func (State) WithCgroupParent ¶
WithCgroupParent sets the parent cgroup for any containers created from this state. This is useful when you want to apply resource constraints to a group of containers. Cgroups are Linux specific and only applies to containers created from this state such as via `[State.Run]` Cgroups do not apply to image configs.
func (State) WithImageConfig ¶
WithImageConfig adds the environment variables, working directory, and platform specified in the image config to the state.
func (State) WithOutput ¶
WithOutput creats a new state with the output set to the given output.
type StateOption ¶
func AddEnv ¶
func AddEnv(key, value string) StateOption
AddEnv returns a StateOption whichs adds an environment variable to the state. Use this with State.With to create a new state with the environment variable set. This is the equivalent of `[State.AddEnv]`
func AddEnvf ¶
func AddEnvf(key, value string, v ...interface{}) StateOption
AddEnvf is the same as AddEnv but allows for a format string. This is the equivalent of `[State.AddEnvf]`
func Dir ¶
func Dir(str string) StateOption
Dir returns a StateOption sets the working directory for the state which will be used to resolve relative paths as well as the working directory for State.Run. See State.With for where to use this.
func Dirf ¶
func Dirf(str string, v ...interface{}) StateOption
Dirf is the same as Dir but allows for a format string.
func Hostname ¶
func Hostname(str string) StateOption
Hostname returns a StateOption which sets the hostname used for containers created by State.Run. This is the equivalent of State.Hostname See State.With for where to use this.
func Network ¶
func Network(v pb.NetMode) StateOption
Network returns a StateOption which sets the network mode used for containers created by State.Run. This is the equivalent of State.Network See State.With for where to use this.
func Reset ¶
func Reset(other State) StateOption
Reset returns a StateOption which creates a new State with just the output of the current State and the provided State is set as the parent. This is the equivalent of State.Reset
func Security ¶
func Security(v pb.SecurityMode) StateOption
Security returns a StateOption which sets the security mode used for containers created by State.Run. This is the equivalent of State.Security See State.With for where to use this.
func User ¶
func User(str string) StateOption
User returns a StateOption which sets the user for the state which will be used by State.Run. This is the equivalent of State.User See State.With for where to use this.
func (StateOption) SetRunOption ¶
func (fn StateOption) SetRunOption(ei *ExecInfo)
type TmpfsOption ¶
type TmpfsOption interface {
SetTmpfsOption(*TmpfsInfo)
}
func TmpfsSize ¶
func TmpfsSize(b int64) TmpfsOption
type UlimitName ¶
type UlimitName string
const ( UlimitCore UlimitName = "core" UlimitCPU UlimitName = "cpu" UlimitData UlimitName = "data" UlimitFsize UlimitName = "fsize" UlimitLocks UlimitName = "locks" UlimitMemlock UlimitName = "memlock" UlimitMsgqueue UlimitName = "msgqueue" UlimitNice UlimitName = "nice" UlimitNofile UlimitName = "nofile" UlimitNproc UlimitName = "nproc" UlimitRss UlimitName = "rss" UlimitRtprio UlimitName = "rtprio" UlimitRttime UlimitName = "rttime" UlimitSigpending UlimitName = "sigpending" UlimitStack UlimitName = "stack" )
type Vertex ¶
type Vertex interface { Validate(context.Context, *Constraints) error Marshal(context.Context, *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) Output() Output Inputs() []Output }