build

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2019 License: Apache-2.0 Imports: 45 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Label for all image builds created with Tilt.
	//
	// It's the responsibility of ImageBuilder to ensure
	// that all images built with Tilt have an appropriate BuildMode label.
	BuildMode dockerfile.Label = "tilt.buildMode"

	// Label when an image is created by a test.
	TestImage dockerfile.Label = "tilt.test"

	// Label when an image is for path caching.
	CacheImage dockerfile.Label = "tilt.cache"
)
View Source
const (
	BuildModeScratch  dockerfile.LabelValue = "scratch"
	BuildModeExisting dockerfile.LabelValue = "existing"
)
View Source
const CacheTagPrefix = "tilt-cache-"

Cache directories are stored at the same image name, but with just the cachedir contents and at a particular tag.

View Source
const TaskKillExitCode = 137

https://success.docker.com/article/what-causes-a-container-to-exit-with-code-137

Variables

View Source
var ImageTagPrefix = "tilt-"

The image tag prefix can be customized.

This allows our integration tests to customize the prefix so that they can write to a public registry without interfering with each other.

Functions

func BoilRuns added in v0.7.11

func BoilRuns(runs []model.Run, pathMappings []PathMapping) ([]model.Cmd, error)

func FilterByLabel

func FilterByLabel(label dockerfile.Label) filters.KeyValuePair

func FilterByLabelValue

func FilterByLabelValue(label dockerfile.Label, val dockerfile.LabelValue) filters.KeyValuePair

func FilterByRefName

func FilterByRefName(ref reference.Named) filters.KeyValuePair

func IsUserBuildFailure

func IsUserBuildFailure(err error) bool

func NewDockerImageBuilder

func NewDockerImageBuilder(dCli docker.Client, extraLabels dockerfile.Labels) *dockerImageBuilder

func Options

func Options(archive io.Reader, args model.DockerBuildArgs) docker.BuildOptions

func PathMappingsToContainerPaths

func PathMappingsToContainerPaths(mappings []PathMapping) []string

func PathMappingsToLocalPaths added in v0.7.11

func PathMappingsToLocalPaths(mappings []PathMapping) []string

func WrapContainerExecError added in v0.5.1

func WrapContainerExecError(err error, cID container.ID, cmd model.Cmd) error

Convert a Docker exec error into our own internal error type.

Types

type ArchiveBuilder

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

func NewArchiveBuilder

func NewArchiveBuilder(filter model.PathMatcher) *ArchiveBuilder

func (*ArchiveBuilder) ArchivePathsIfExist

func (a *ArchiveBuilder) ArchivePathsIfExist(ctx context.Context, paths []PathMapping) error

ArchivePathsIfExist creates a tar archive of all local files in `paths`. It quietly skips any paths that don't exist.

func (*ArchiveBuilder) BytesBuffer

func (a *ArchiveBuilder) BytesBuffer() (*bytes.Buffer, error)

func (*ArchiveBuilder) Paths added in v0.7.11

func (a *ArchiveBuilder) Paths() []string

Local paths that were archived

type CacheBuilder added in v0.2.0

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

Reads and writes images that contain cache directories.

Used in the directory cache experimental feature, and designed to be deleted easily if that experiment doesn't work out.

https://app.clubhouse.io/windmill/story/728/support-package-json-changes-gracefully

func NewCacheBuilder added in v0.2.0

func NewCacheBuilder(dCli docker.Client) CacheBuilder

func (CacheBuilder) CreateCacheFrom added in v0.2.0

func (b CacheBuilder) CreateCacheFrom(ctx context.Context, inputs CacheInputs, sourceRef reference.NamedTagged, buildArgs model.DockerBuildArgs) error

Creates a cache image.

func (CacheBuilder) FetchCache added in v0.2.0

func (b CacheBuilder) FetchCache(ctx context.Context, inputs CacheInputs) (CacheRef, error)

Check if a cache exists for this ref name.

type CacheInputs added in v0.7.11

type CacheInputs struct {
	Ref            reference.Named
	CachePaths     []string
	BaseDockerfile dockerfile.Dockerfile
}

type CacheRef added in v0.7.11

type CacheRef reference.NamedTagged

type Clock added in v0.5.0

type Clock interface {
	Now() time.Time
}

func ProvideClock added in v0.5.0

func ProvideClock() Clock

type ContainerUpdater

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

func NewContainerUpdater

func NewContainerUpdater(dCli docker.Client) *ContainerUpdater

func (*ContainerUpdater) RmPathsFromContainer

func (r *ContainerUpdater) RmPathsFromContainer(ctx context.Context, cID container.ID, paths []PathMapping) error

func (*ContainerUpdater) UpdateInContainer

func (r *ContainerUpdater) UpdateInContainer(ctx context.Context, cID container.ID, paths []PathMapping, filter model.PathMatcher, runs []model.Cmd, hotReload bool, w io.Writer) error

type CustomBuilder added in v0.7.11

type CustomBuilder interface {
	Build(ctx context.Context, ref reference.Named, command string, expectedTag string) (reference.NamedTagged, error)
}

type ExecCustomBuilder added in v0.7.11

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

func NewExecCustomBuilder added in v0.7.11

func NewExecCustomBuilder(dCli docker.Client, env docker.Env, clock Clock) *ExecCustomBuilder

func (*ExecCustomBuilder) Build added in v0.7.11

func (b *ExecCustomBuilder) Build(ctx context.Context, ref reference.Named, command string, expectedTag string) (reference.NamedTagged, error)

type ImageBuilder

type ImageBuilder interface {
	BuildDockerfile(ctx context.Context, ps *PipelineState, ref reference.Named, df dockerfile.Dockerfile, buildPath string, filter model.PathMatcher, buildArgs map[string]string) (reference.NamedTagged, error)
	BuildImageFromScratch(ctx context.Context, ps *PipelineState, ref reference.Named, baseDockerfile dockerfile.Dockerfile, syncs []model.Sync, filter model.PathMatcher, runs []model.Run, entrypoint model.Cmd) (reference.NamedTagged, error)
	BuildImageFromExisting(ctx context.Context, ps *PipelineState, existing reference.NamedTagged, paths []PathMapping, filter model.PathMatcher, runs []model.Run) (reference.NamedTagged, error)
	PushImage(ctx context.Context, name reference.NamedTagged, writer io.Writer) (reference.NamedTagged, error)
	TagImage(ctx context.Context, name reference.Named, dig digest.Digest) (reference.NamedTagged, error)
}

func DefaultImageBuilder

func DefaultImageBuilder(b *dockerImageBuilder) ImageBuilder

type ImageReaper

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

func NewImageReaper

func NewImageReaper(docker docker.Client) ImageReaper

func (ImageReaper) RemoveTiltImages

func (r ImageReaper) RemoveTiltImages(ctx context.Context, createdBefore time.Time, force bool, extraFilters ...filters.KeyValuePair) error

Delete all Tilt builds

For safety reasons, we only delete images with the tilt.buildMode label, but we let the caller set additional filters.

type PathMapping added in v0.5.0

type PathMapping struct {
	LocalPath     string
	ContainerPath string
}

PathMapping represents a mapping from the local path to the tarball path

To send a local file into a container, we copy it into a tarball, send the tarball to docker, and then run a sequence of steps to unpack the tarball in the container file system.

That means every file has 3 paths: 1) LocalPath 2) TarballPath 3) ContainerPath

In incremental builds, TarballPath and ContainerPath are always the same, so it was correct to use TarballPath and ContainerPath interchangeably.

In DockerBuilds, this is no longer the case.

TODO(nick): Do a pass on renaming all the path types

func FilesToPathMappings

func FilesToPathMappings(files []string, syncs []model.Sync) ([]PathMapping, error)

FilesToPathMappings converts a list of absolute local filepaths into pathMappings (i.e. associates local filepaths with their syncs and destination paths).

func FilterMappings

func FilterMappings(mappings []PathMapping, matcher model.PathMatcher) ([]PathMapping, error)

func MissingLocalPaths

func MissingLocalPaths(ctx context.Context, mappings []PathMapping) (missing, rest []PathMapping, err error)

Return all the path mappings for local paths that do not exist.

func SyncsToPathMappings added in v0.7.11

func SyncsToPathMappings(syncs []model.Sync) []PathMapping

func (PathMapping) Filter added in v0.5.0

func (m PathMapping) Filter(matcher model.PathMatcher) ([]PathMapping, error)

func (PathMapping) PrettyStr added in v0.7.12

func (m PathMapping) PrettyStr() string

type PathMappingErr

type PathMappingErr struct {
	File string
	// contains filtered or unexported fields
}

func (*PathMappingErr) Error

func (e *PathMappingErr) Error() string

type PipelineState

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

func NewPipelineState

func NewPipelineState(ctx context.Context, totalStepCount int, c Clock) *PipelineState

func (*PipelineState) End

func (ps *PipelineState) End(ctx context.Context, err error)

NOTE(maia): this func should always be deferred in a closure, so that the `err` arg is bound at the time of calling rather than at the time of deferring. I.e., do:

defer func() { ps.End(err) }()

and NOT:

defer ps.End(err)

func (*PipelineState) EndPipelineStep

func (ps *PipelineState) EndPipelineStep(ctx context.Context)

func (*PipelineState) Printf

func (ps *PipelineState) Printf(ctx context.Context, format string, a ...interface{})

func (*PipelineState) StartBuildStep

func (ps *PipelineState) StartBuildStep(ctx context.Context, format string, a ...interface{})

func (*PipelineState) StartPipelineStep

func (ps *PipelineState) StartPipelineStep(ctx context.Context, format string, a ...interface{})

func (*PipelineState) Writer

func (ps *PipelineState) Writer(ctx context.Context) io.Writer

type UserBuildFailure

type UserBuildFailure struct {
	ExitCode int
}

Indicates that the build failed because the user script failed (as opposed to an infrastructure issue).

func (UserBuildFailure) Error

func (e UserBuildFailure) Error() string

Jump to

Keyboard shortcuts

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