core

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2023 License: Apache-2.0 Imports: 55 Imported by: 1

Documentation

Index

Constants

View Source
const OCIStoreName = "dagger-oci"

Variables

View Source
var ErrContainerNoExec = errors.New("no command has been executed")
View Source
var ErrInvalidCacheID = errors.New("invalid cache ID; create one using cacheVolume")
View Source
var ErrNotFound = errors.New("secret not found")

ErrNotFound indicates a secret can not be found.

Functions

func AddEnv added in v0.6.0

func AddEnv(env []string, name, value string) []string

AddEnv adds or updates an environment variable in 'env'.

func LookupEnv added in v0.6.0

func LookupEnv(env []string, name string) (string, bool)

LookupEnv returns the value of an environment variable.

func WalkEnv added in v0.6.0

func WalkEnv(env []string, fn func(string, string, string))

WalkEnv iterates over all environment variables with parsed key and value, and original string.

func WithServices added in v0.3.13

func WithServices[T any](ctx context.Context, bk *buildkit.Client, svcs ServiceBindings, fn func() (T, error)) (T, error)

WithServices runs the given function with the given services started, detaching from each of them after the function completes.

Types

type AliasSet added in v0.3.13

type AliasSet []string

func (AliasSet) String added in v0.3.13

func (set AliasSet) String() string

func (AliasSet) With added in v0.3.13

func (set AliasSet) With(alias string) AliasSet

type BuildArg added in v0.3.8

type BuildArg struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type CacheID

type CacheID string

CacheID is an arbitrary string typically derived from a set of token strings acting as the cache's "key" or "scope".

func (CacheID) ToCacheVolume added in v0.5.1

func (id CacheID) ToCacheVolume() (*CacheVolume, error)

type CacheMap added in v0.8.0

type CacheMap[K comparable, T any] struct {
	// contains filtered or unexported fields
}

func NewCacheMap added in v0.8.0

func NewCacheMap[K comparable, T any]() *CacheMap[K, T]

func (*CacheMap[K, T]) GetOrInitialize added in v0.8.0

func (m *CacheMap[K, T]) GetOrInitialize(key K, fn func() (T, error)) (T, error)

type CacheSharingMode added in v0.3.12

type CacheSharingMode string

CacheSharingMode is a string deriving from CacheSharingMode enum it can take values: SHARED, PRIVATE, LOCKED

const (
	CacheSharingModeShared  CacheSharingMode = "SHARED"
	CacheSharingModePrivate CacheSharingMode = "PRIVATE"
	CacheSharingModeLocked  CacheSharingMode = "LOCKED"
)

type CacheVolume

type CacheVolume struct {
	Keys []string `json:"keys"`
}

CacheVolume is a persistent volume with a globally scoped identifier.

func NewCache

func NewCache(keys ...string) *CacheVolume

func (*CacheVolume) Clone added in v0.5.1

func (cache *CacheVolume) Clone() *CacheVolume

func (*CacheVolume) ID

func (cache *CacheVolume) ID() (CacheID, error)

func (*CacheVolume) Sum added in v0.5.1

func (cache *CacheVolume) Sum() string

Sum returns a checksum of the cache tokens suitable for use as a cache key.

func (*CacheVolume) WithKey

func (cache *CacheVolume) WithKey(key string) *CacheVolume

type Container

type Container struct {
	// The container's root filesystem.
	FS *pb.Definition `json:"fs"`

	// Image configuration (env, workdir, etc)
	Config specs.ImageConfig `json:"cfg"`

	// Pipeline
	Pipeline pipeline.Path `json:"pipeline"`

	// Mount points configured for the container.
	Mounts ContainerMounts `json:"mounts,omitempty"`

	// Meta is the /dagger filesystem. It will be null if nothing has run yet.
	Meta *pb.Definition `json:"meta,omitempty"`

	// The platform of the container's rootfs.
	Platform specs.Platform `json:"platform,omitempty"`

	// Secrets to expose to the container.
	Secrets []ContainerSecret `json:"secret_env,omitempty"`

	// Sockets to expose to the container.
	Sockets []ContainerSocket `json:"sockets,omitempty"`

	// Image reference
	ImageRef string `json:"image_ref,omitempty"`

	// Ports to expose from the container.
	Ports []ContainerPort `json:"ports,omitempty"`

	// Services to start before running the container.
	Services    ServiceBindings `json:"services,omitempty"`
	HostAliases []HostAlias     `json:"host_aliases,omitempty"`

	// Focused indicates whether subsequent operations will be
	// focused, i.e. shown more prominently in the UI.
	Focused bool `json:"focused"`
}

Container is a content-addressed container.

func NewContainer added in v0.3.3

func NewContainer(id ContainerID, pipeline pipeline.Path, platform specs.Platform) (*Container, error)

func (*Container) Build

func (container *Container) Build(
	ctx context.Context,
	context *Directory,
	dockerfile string,
	buildArgs []BuildArg,
	target string,
	secrets []SecretID,
	bk *buildkit.Client,
	buildCache *CacheMap[uint64, *Container],
) (*Container, error)

func (*Container) Clone added in v0.5.1

func (container *Container) Clone() *Container

Clone returns a deep copy of the container suitable for modifying in a WithXXX method.

func (*Container) Digest added in v0.5.2

func (container *Container) Digest() (digest.Digest, error)

Digest returns the container's content hash.

func (*Container) Directory

func (container *Container) Directory(ctx context.Context, bk *buildkit.Client, dirPath string) (*Directory, error)

func (*Container) Endpoint added in v0.3.13

func (container *Container) Endpoint(bk *buildkit.Client, port int, scheme string) (string, error)

func (*Container) Evaluate added in v0.3.13

func (container *Container) Evaluate(ctx context.Context, bk *buildkit.Client) error

func (*Container) Export added in v0.3.3

func (container *Container) Export(
	ctx context.Context,
	bk *buildkit.Client,
	dest string,
	platformVariants []ContainerID,
	forcedCompression ImageLayerCompression,
	mediaTypes ImageMediaTypes,
) error

func (*Container) FSState added in v0.5.1

func (container *Container) FSState() (llb.State, error)

FSState returns the container's root filesystem mount state. If there is none (as with an empty container ID), it returns scratch.

func (*Container) File

func (container *Container) File(ctx context.Context, bk *buildkit.Client, filePath string) (*File, error)

func (*Container) From

func (container *Container) From(ctx context.Context, bk *buildkit.Client, addr string) (*Container, error)

func (*Container) HostnameOrErr added in v0.5.1

func (container *Container) HostnameOrErr() (string, error)

func (*Container) ID

func (container *Container) ID() (ContainerID, error)

ID marshals the container into a content-addressed ID.

func (*Container) ImageConfig

func (container *Container) ImageConfig(ctx context.Context) (specs.ImageConfig, error)

func (*Container) ImageRefOrErr added in v0.5.1

func (container *Container) ImageRefOrErr(ctx context.Context, bk *buildkit.Client) (string, error)

func (*Container) Import added in v0.5.0

func (container *Container) Import(
	ctx context.Context,
	source FileID,
	tag string,
	bk *buildkit.Client,
	host *Host,
	importCache *CacheMap[uint64, *specs.Descriptor],
	store content.Store,
	lm *leaseutil.Manager,
) (*Container, error)

func (*Container) MetaFileContents added in v0.3.5

func (container *Container) MetaFileContents(ctx context.Context, bk *buildkit.Client, progSock string, filePath string) (string, error)

func (*Container) MetaState added in v0.5.1

func (container *Container) MetaState() (*llb.State, error)

MetaState returns the container's metadata mount state. If the container has yet to run, it returns nil.

func (*Container) MountTargets added in v0.5.1

func (container *Container) MountTargets(ctx context.Context) ([]string, error)

func (*Container) PipelinePath added in v0.5.2

func (container *Container) PipelinePath() pipeline.Path

PipelinePath returns the container's pipeline path.

func (*Container) Publish

func (container *Container) Publish(
	ctx context.Context,
	bk *buildkit.Client,
	ref string,
	platformVariants []ContainerID,
	forcedCompression ImageLayerCompression,
	mediaTypes ImageMediaTypes,
) (string, error)

func (*Container) RootFS added in v0.3.5

func (container *Container) RootFS(ctx context.Context) (*Directory, error)

func (*Container) Start added in v0.3.13

func (container *Container) Start(ctx context.Context, bk *buildkit.Client) (*Service, error)

func (*Container) UpdateImageConfig

func (container *Container) UpdateImageConfig(ctx context.Context, updateFn func(specs.ImageConfig) specs.ImageConfig) (*Container, error)

func (*Container) WithDirectory added in v0.3.7

func (container *Container) WithDirectory(ctx context.Context, bk *buildkit.Client, subdir string, src *Directory, filter CopyFilter, owner string) (*Container, error)

func (*Container) WithExec added in v0.3.13

func (container *Container) WithExec(ctx context.Context, bk *buildkit.Client, progSock string, defaultPlatform specs.Platform, opts ContainerExecOpts) (*Container, error)

func (*Container) WithExposedPort added in v0.3.13

func (container *Container) WithExposedPort(port ContainerPort) (*Container, error)

func (*Container) WithFile added in v0.3.7

func (container *Container) WithFile(ctx context.Context, bk *buildkit.Client, destPath string, src *File, permissions fs.FileMode, owner string) (*Container, error)

func (*Container) WithMountedCache

func (container *Container) WithMountedCache(ctx context.Context, bk *buildkit.Client, target string, cache *CacheVolume, source *Directory, concurrency CacheSharingMode, owner string) (*Container, error)

func (*Container) WithMountedDirectory

func (container *Container) WithMountedDirectory(ctx context.Context, bk *buildkit.Client, target string, dir *Directory, owner string) (*Container, error)

func (*Container) WithMountedFile

func (container *Container) WithMountedFile(ctx context.Context, bk *buildkit.Client, target string, file *File, owner string) (*Container, error)

func (*Container) WithMountedSecret

func (container *Container) WithMountedSecret(ctx context.Context, bk *buildkit.Client, target string, source *Secret, owner string) (*Container, error)

func (*Container) WithMountedTemp

func (container *Container) WithMountedTemp(ctx context.Context, target string) (*Container, error)

func (*Container) WithNewFile added in v0.3.7

func (container *Container) WithNewFile(ctx context.Context, bk *buildkit.Client, dest string, content []byte, permissions fs.FileMode, owner string) (*Container, error)

func (*Container) WithPipeline added in v0.5.1

func (container *Container) WithPipeline(ctx context.Context, name, description string, labels []pipeline.Label) (*Container, error)

func (*Container) WithRootFS added in v0.3.5

func (container *Container) WithRootFS(ctx context.Context, dir *Directory) (*Container, error)

func (*Container) WithSecretVariable

func (container *Container) WithSecretVariable(ctx context.Context, name string, secret *Secret) (*Container, error)

func (*Container) WithServiceBinding added in v0.5.0

func (container *Container) WithServiceBinding(bk *buildkit.Client, svc *Container, alias string) (*Container, error)

func (*Container) WithUnixSocket added in v0.3.7

func (container *Container) WithUnixSocket(ctx context.Context, bk *buildkit.Client, target string, source *socket.Socket, owner string) (*Container, error)

func (*Container) WithoutExposedPort added in v0.3.13

func (container *Container) WithoutExposedPort(port int, protocol NetworkProtocol) (*Container, error)

func (*Container) WithoutMount

func (container *Container) WithoutMount(ctx context.Context, target string) (*Container, error)

func (*Container) WithoutUnixSocket added in v0.3.7

func (container *Container) WithoutUnixSocket(ctx context.Context, target string) (*Container, error)

type ContainerExecOpts

type ContainerExecOpts struct {
	// Command to run instead of the container's default command
	Args []string

	// If the container has an entrypoint, ignore it for this exec rather than
	// calling it with args.
	SkipEntrypoint bool

	// Content to write to the command's standard input before closing
	Stdin string

	// Redirect the command's standard output to a file in the container
	RedirectStdout string

	// Redirect the command's standard error to a file in the container
	RedirectStderr string

	// Provide dagger access to the executed command
	// Do not use this option unless you trust the command being executed.
	// The command being executed WILL BE GRANTED FULL ACCESS TO YOUR HOST FILESYSTEM
	ExperimentalPrivilegedNesting bool

	// Grant the process all root capabilities
	InsecureRootCapabilities bool
}

type ContainerExecUncachedMetadata added in v0.8.0

type ContainerExecUncachedMetadata struct {
	ParentClientIDs []string `json:"parentClientIDs,omitempty"`
	ServerID        string   `json:"serverID,omitempty"`
	ProgSockPath    string   `json:"progSockPath,omitempty"`
}

Metadata passed to an exec that doesn't count towards the cache key. This should be used with great caution; only for metadata that is safe to be de-duplicated across execs.

Currently, this uses the FTPProxy LLB option to pass without becoming part of the cache key. This is a hack that, while ugly to look at, is simple and robust. Alternatives would be to use secrets or sockets, but they are more complicated, or to create a custom buildkit worker/executor, which is MUCH more complicated.

If a need to add ftp proxy support arises, then we can just also embed the "real" ftp proxy setting in here too and have the shim handle leaving only that set in the actual env var.

func (*ContainerExecUncachedMetadata) FromEnv added in v0.8.0

func (md *ContainerExecUncachedMetadata) FromEnv(envKV string) (bool, error)

func (ContainerExecUncachedMetadata) ToLLBRunOpt added in v0.8.0

func (md ContainerExecUncachedMetadata) ToLLBRunOpt() (llb.RunOption, error)

type ContainerID

type ContainerID string

ContainerID is an opaque value representing a content-addressed container.

func (ContainerID) Digest added in v0.5.2

func (id ContainerID) Digest() (digest.Digest, error)

func (ContainerID) String added in v0.3.13

func (id ContainerID) String() string

func (ContainerID) ToContainer added in v0.5.1

func (id ContainerID) ToContainer() (*Container, error)

type ContainerMount

type ContainerMount struct {
	// The source of the mount.
	Source *pb.Definition `json:"source,omitempty"`

	// A path beneath the source to scope the mount to.
	SourcePath string `json:"source_path,omitempty"`

	// The path of the mount within the container.
	Target string `json:"target"`

	// Persist changes to the mount under this cache ID.
	CacheID string `json:"cache_id,omitempty"`

	// How to share the cache across concurrent runs.
	CacheSharingMode string `json:"cache_sharing,omitempty"`

	// Configure the mount as a tmpfs.
	Tmpfs bool `json:"tmpfs,omitempty"`
}

ContainerMount is a mount point configured in a container.

func (ContainerMount) SourceState

func (mnt ContainerMount) SourceState() (llb.State, error)

SourceState returns the state of the source of the mount.

type ContainerMounts added in v0.3.3

type ContainerMounts []ContainerMount

func (ContainerMounts) With added in v0.3.3

type ContainerPort added in v0.3.13

type ContainerPort struct {
	Port        int             `json:"port"`
	Protocol    NetworkProtocol `json:"protocol"`
	Description *string         `json:"description,omitempty"`
}

ContainerPort configures a port to expose from the container.

type ContainerSecret

type ContainerSecret struct {
	Secret    SecretID   `json:"secret"`
	EnvName   string     `json:"env,omitempty"`
	MountPath string     `json:"path,omitempty"`
	Owner     *Ownership `json:"owner,omitempty"`
}

ContainerSecret configures a secret to expose, either as an environment variable or mounted to a file path.

type ContainerSocket added in v0.3.7

type ContainerSocket struct {
	SocketID socket.ID  `json:"socket"`
	UnixPath string     `json:"unix_path,omitempty"`
	Owner    *Ownership `json:"owner,omitempty"`
}

ContainerSocket configures a socket to expose, currently as a Unix socket, but potentially as a TCP or UDP address in the future.

type Context added in v0.8.0

type Context struct {
	context.Context
	ResolveParams graphql.ResolveParams

	// Vertex is a recorder for sending logs to the request's vertex in the
	// progress stream.
	Vertex *progrock.VertexRecorder
}

type CopyFilter added in v0.3.3

type CopyFilter struct {
	Exclude []string
	Include []string
}

type Digestible added in v0.8.0

type Digestible interface {
	Digest() (digest.Digest, error)
}

Digestible is any object which can return a digest of its content.

It is used to record the request's result as an output of the request's vertex in the progress stream.

type Directory

type Directory struct {
	LLB      *pb.Definition `json:"llb"`
	Dir      string         `json:"dir"`
	Platform specs.Platform `json:"platform"`
	Pipeline pipeline.Path  `json:"pipeline"`

	// Services necessary to provision the directory.
	Services ServiceBindings `json:"services,omitempty"`
}

Directory is a content-addressed directory.

func NewDirectory

func NewDirectory(ctx context.Context, def *pb.Definition, dir string, pipeline pipeline.Path, platform specs.Platform, services ServiceBindings) *Directory

func NewDirectorySt added in v0.5.2

func NewDirectorySt(ctx context.Context, st llb.State, dir string, pipeline pipeline.Path, platform specs.Platform, services ServiceBindings) (*Directory, error)

func NewScratchDirectory added in v0.6.3

func NewScratchDirectory(pipeline pipeline.Path, platform specs.Platform) *Directory

func (*Directory) Clone added in v0.5.1

func (dir *Directory) Clone() *Directory

Clone returns a deep copy of the container suitable for modifying in a WithXXX method.

func (*Directory) Diff

func (dir *Directory) Diff(ctx context.Context, other *Directory) (*Directory, error)

func (*Directory) Digest added in v0.5.2

func (dir *Directory) Digest() (digest.Digest, error)

Digest returns the directory's content hash.

func (*Directory) Directory

func (dir *Directory) Directory(ctx context.Context, bk *buildkit.Client, subdir string) (*Directory, error)

func (*Directory) Entries

func (dir *Directory) Entries(ctx context.Context, bk *buildkit.Client, src string) ([]string, error)

func (*Directory) Evaluate added in v0.6.4

func (dir *Directory) Evaluate(ctx context.Context, bk *buildkit.Client) error

func (*Directory) Export added in v0.3.3

func (dir *Directory) Export(
	ctx context.Context,
	bk *buildkit.Client,
	host *Host,
	destPath string,
) (rerr error)

func (*Directory) File

func (dir *Directory) File(ctx context.Context, bk *buildkit.Client, file string) (*File, error)

func (*Directory) ID

func (dir *Directory) ID() (DirectoryID, error)

ID marshals the directory into a content-addressed ID.

func (*Directory) PipelinePath added in v0.5.2

func (dir *Directory) PipelinePath() pipeline.Path

func (*Directory) Root added in v0.5.1

func (dir *Directory) Root() (*Directory, error)

Root removes any relative path from the directory.

func (*Directory) SetState added in v0.5.1

func (dir *Directory) SetState(ctx context.Context, st llb.State) error

func (*Directory) Stat

func (dir *Directory) Stat(ctx context.Context, bk *buildkit.Client, src string) (*fstypes.Stat, error)

func (*Directory) State added in v0.5.1

func (dir *Directory) State() (llb.State, error)

func (*Directory) StateWithSourcePath added in v0.5.1

func (dir *Directory) StateWithSourcePath() (llb.State, error)

func (*Directory) WithDirectory

func (dir *Directory) WithDirectory(ctx context.Context, destDir string, src *Directory, filter CopyFilter, owner *Ownership) (*Directory, error)

func (*Directory) WithFile added in v0.3.3

func (dir *Directory) WithFile(ctx context.Context, destPath string, src *File, permissions fs.FileMode, owner *Ownership) (*Directory, error)

func (*Directory) WithNewDirectory added in v0.3.3

func (dir *Directory) WithNewDirectory(ctx context.Context, dest string, permissions fs.FileMode) (*Directory, error)

func (*Directory) WithNewFile

func (dir *Directory) WithNewFile(ctx context.Context, dest string, content []byte, permissions fs.FileMode, ownership *Ownership) (*Directory, error)

func (*Directory) WithPipeline added in v0.5.1

func (dir *Directory) WithPipeline(ctx context.Context, name, description string, labels []pipeline.Label) (*Directory, error)

func (*Directory) WithTimestamps added in v0.3.8

func (dir *Directory) WithTimestamps(ctx context.Context, unix int) (*Directory, error)

func (*Directory) Without

func (dir *Directory) Without(ctx context.Context, path string) (*Directory, error)

type DirectoryID

type DirectoryID string

DirectoryID is an opaque value representing a content-addressed directory.

func (DirectoryID) Digest added in v0.5.2

func (id DirectoryID) Digest() (digest.Digest, error)

func (DirectoryID) String added in v0.5.2

func (id DirectoryID) String() string

func (DirectoryID) ToDirectory added in v0.5.1

func (id DirectoryID) ToDirectory() (*Directory, error)

ToDirectory converts the ID into a real Directory.

type File

type File struct {
	LLB      *pb.Definition `json:"llb"`
	File     string         `json:"file"`
	Pipeline pipeline.Path  `json:"pipeline"`
	Platform specs.Platform `json:"platform"`

	// Services necessary to provision the file.
	Services ServiceBindings `json:"services,omitempty"`
}

File is a content-addressed file.

func NewFile

func NewFile(ctx context.Context, def *pb.Definition, file string, pipeline pipeline.Path, platform specs.Platform, services ServiceBindings) *File

func NewFileSt added in v0.5.2

func NewFileSt(ctx context.Context, st llb.State, dir string, pipeline pipeline.Path, platform specs.Platform, services ServiceBindings) (*File, error)

func (*File) Clone added in v0.5.1

func (file *File) Clone() *File

Clone returns a deep copy of the container suitable for modifying in a WithXXX method.

func (*File) Contents

func (file *File) Contents(ctx context.Context, bk *buildkit.Client) ([]byte, error)

Contents handles file content retrieval

func (*File) Digest added in v0.5.2

func (file *File) Digest() (digest.Digest, error)

Digest returns the file's content hash.

func (*File) Evaluate added in v0.6.4

func (file *File) Evaluate(ctx context.Context, bk *buildkit.Client) error

func (*File) Export added in v0.3.3

func (file *File) Export(
	ctx context.Context,
	bk *buildkit.Client,
	host *Host,
	dest string,
	allowParentDirPath bool,
) error

func (*File) ID

func (file *File) ID() (FileID, error)

ID marshals the file into a content-addressed ID.

func (*File) Open added in v0.5.0

func (file *File) Open(ctx context.Context, host *Host, bk *buildkit.Client) (io.ReadCloser, error)

func (*File) PipelinePath added in v0.5.2

func (file *File) PipelinePath() pipeline.Path

func (*File) Stat

func (file *File) Stat(ctx context.Context, bk *buildkit.Client) (*fstypes.Stat, error)

func (*File) State added in v0.5.1

func (file *File) State() (llb.State, error)

func (*File) WithTimestamps added in v0.3.8

func (file *File) WithTimestamps(ctx context.Context, unix int) (*File, error)

type FileID

type FileID string

FileID is an opaque value representing a content-addressed file.

func (FileID) Digest added in v0.5.2

func (id FileID) Digest() (digest.Digest, error)

func (FileID) String added in v0.5.2

func (id FileID) String() string

func (FileID) ToFile added in v0.5.1

func (id FileID) ToFile() (*File, error)

type Host added in v0.3.3

type Host struct {
}

func NewHost added in v0.3.3

func NewHost() *Host

func (*Host) Directory added in v0.3.3

func (host *Host) Directory(
	ctx context.Context,
	bk *buildkit.Client,
	dirPath string,
	p pipeline.Path,
	pipelineNamePrefix string,
	platform specs.Platform,
	filter CopyFilter,
) (*Directory, error)

func (*Host) File added in v0.6.2

func (host *Host) File(
	ctx context.Context,
	bk *buildkit.Client,
	path string,
	p pipeline.Path,
	platform specs.Platform,
) (*File, error)

func (*Host) Socket added in v0.3.7

func (host *Host) Socket(ctx context.Context, sockPath string) (*socket.Socket, error)

type HostAlias added in v0.3.13

type HostAlias struct {
	Alias  string `json:"alias"`
	Target string `json:"target"`
}

type ImageLayerCompression added in v0.5.3

type ImageLayerCompression string
const (
	CompressionGzip         ImageLayerCompression = "Gzip"
	CompressionZstd         ImageLayerCompression = "Zstd"
	CompressionEStarGZ      ImageLayerCompression = "EStarGZ"
	CompressionUncompressed ImageLayerCompression = "Uncompressed"
)

type ImageMediaTypes added in v0.6.4

type ImageMediaTypes string
const (
	OCIMediaTypes    ImageMediaTypes = "OCIMediaTypes"
	DockerMediaTypes ImageMediaTypes = "DockerMediaTypes"
)

type NetworkProtocol added in v0.3.13

type NetworkProtocol string

NetworkProtocol is a string deriving from NetworkProtocol enum

const (
	NetworkProtocolTCP NetworkProtocol = "TCP"
	NetworkProtocolUDP NetworkProtocol = "UDP"
)

func (NetworkProtocol) Network added in v0.3.13

func (p NetworkProtocol) Network() string

Network returns the value appropriate for the "network" argument to Go net.Dial, and for appending to the port number to form the key for the ExposedPorts object in the OCI image config.

type Ownership added in v0.5.1

type Ownership struct {
	UID int `json:"uid"`
	GID int `json:"gid"`
}

Ownership contains a UID/GID pair resolved from a user/group name or ID pair provided via the API. It primarily exists to distinguish an unspecified ownership from UID/GID 0 (root) ownership.

func (Ownership) Opt added in v0.5.1

func (owner Ownership) Opt() llb.ChownOption

type Project added in v0.5.3

type Project struct {
	// The project's root directory
	Directory *Directory `json:"directory"`
	// Path to the project's config file relative to the root directory
	ConfigPath string `json:"configPath"`
	// The parsed project config
	Config projectconfig.Config `json:"config"`
	// The graphql schema for the project
	Schema string `json:"schema"`
	// The project's platform
	Platform specs.Platform `json:"platform,omitempty"`
}

func NewProject added in v0.5.3

func NewProject(id ProjectID, platform specs.Platform) (*Project, error)

func (*Project) Clone added in v0.5.3

func (p *Project) Clone() *Project

func (*Project) Commands added in v0.5.3

func (p *Project) Commands(ctx context.Context) ([]ProjectCommand, error)

func (*Project) ID added in v0.5.3

func (p *Project) ID() (ProjectID, error)

func (*Project) Load added in v0.5.3

func (p *Project) Load(
	ctx context.Context,
	bk *buildkit.Client,
	progSock string,
	pipeline pipeline.Path,
	source *Directory,
	configPath string,
) (*Project, Resolver, error)

type ProjectCommand added in v0.5.3

type ProjectCommand struct {
	Name        string               `json:"name"`
	Flags       []ProjectCommandFlag `json:"flags"`
	ResultType  string               `json:"resultType"`
	Description string               `json:"description"`
	Subcommands []ProjectCommand     `json:"subcommands"`
}

func NewProjectCommand added in v0.5.3

func NewProjectCommand(id ProjectCommandID) (*ProjectCommand, error)

func (*ProjectCommand) ID added in v0.5.3

type ProjectCommandFlag added in v0.5.3

type ProjectCommandFlag struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

type ProjectCommandID added in v0.5.3

type ProjectCommandID string

func (ProjectCommandID) String added in v0.5.3

func (id ProjectCommandID) String() string

func (ProjectCommandID) ToProjectCommand added in v0.5.3

func (id ProjectCommandID) ToProjectCommand() (*ProjectCommand, error)

type ProjectID added in v0.5.3

type ProjectID string

func (ProjectID) String added in v0.5.3

func (id ProjectID) String() string

func (ProjectID) ToProject added in v0.5.3

func (id ProjectID) ToProject() (*Project, error)

type Query added in v0.3.10

type Query struct {
	Context QueryContext
}

func (*Query) PipelinePath added in v0.4.0

func (query *Query) PipelinePath() pipeline.Path

PipelinePath returns the current pipeline path prepended with a "root" pipeline containing default labels. The pipeline has no name, so it won't confuse the user in the UI.

When called against a nil receiver, as will happen if no pipelines have been created, it will return a path with only the root pipeline.

type QueryContext added in v0.3.10

type QueryContext struct {
	// Pipeline
	Pipeline pipeline.Path `json:"pipeline"`
}

type Resolver added in v0.8.0

type Resolver func(ctx *Context, parent any, args any) (any, error)

type Secret

type Secret struct {
	// Name specifies the arbitrary name/id of the secret.
	Name string `json:"name,omitempty"`
}

Secret is a content-addressed secret.

func NewDynamicSecret added in v0.5.1

func NewDynamicSecret(name string) *Secret

func (*Secret) Clone added in v0.5.1

func (secret *Secret) Clone() *Secret

func (*Secret) ID

func (secret *Secret) ID() (SecretID, error)

type SecretID

type SecretID string

SecretID is an opaque value representing a content-addressed secret.

func (SecretID) String added in v0.3.7

func (id SecretID) String() string

func (SecretID) ToSecret added in v0.5.1

func (id SecretID) ToSecret() (*Secret, error)

type SecretStore added in v0.8.0

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

func NewSecretStore added in v0.8.0

func NewSecretStore() *SecretStore

func (*SecretStore) AddSecret added in v0.8.0

func (store *SecretStore) AddSecret(_ context.Context, name string, plaintext []byte) (SecretID, error)

AddSecret adds the secret identified by user defined name with its plaintext value to the secret store.

func (*SecretStore) GetSecret added in v0.8.0

func (store *SecretStore) GetSecret(ctx context.Context, idOrName string) ([]byte, error)

GetSecret returns the plaintext secret value.

Its argument may either be the user defined name originally specified within a SecretID, or a full SecretID value.

A user defined name will be received when secrets are used in a Dockerfile build.

In all other cases, a SecretID is expected.

func (*SecretStore) SetBuildkitClient added in v0.8.0

func (store *SecretStore) SetBuildkitClient(bk *buildkit.Client)

type SecretToScrubInfo added in v0.3.13

type SecretToScrubInfo struct {
	// Envs stores environment variable names that we need to scrub.
	Envs []string `json:"envs,omitempty"`

	// Files stores secret file paths that we need to scrub.
	Files []string `json:"files,omitempty"`
}

SecretToScrubInfo stores the info to access secrets and scrub them from outputs.

type Service added in v0.3.13

type Service struct {
	Container *Container
	Detach    func()
}

type ServiceBindings added in v0.3.13

type ServiceBindings map[ContainerID]AliasSet

func (*ServiceBindings) Merge added in v0.3.13

func (bndp *ServiceBindings) Merge(other ServiceBindings)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL