build

package
v2.11.1 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2024 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PushImageErr = "could not push image"
)

Variables

This section is empty.

Functions

func CreateMultiPlatformImage

func CreateMultiPlatformImage(ctx context.Context, out io.Writer, a *latest.Artifact, tag string, matcher platform.Matcher, ab ArtifactBuilder) (string, error)

func InOrder

func InOrder(ctx context.Context, out io.Writer, tags tag.ImageTags, platforms platform.Resolver, artifacts []*latest.Artifact, artifactBuilder ArtifactBuilder, concurrency int, store ArtifactStore) ([]graph.Artifact, error)

InOrder builds a list of artifacts in dependency order.

func MergeWithPreviousBuilds

func MergeWithPreviousBuilds(builds, previous []graph.Artifact) []graph.Artifact

MergeWithPreviousBuilds merges previous or prebuilt build artifacts with builds. If an artifact is already present in builds, the same artifact from previous will be replaced at the same position.

func SupportsMultiPlatformBuild

func SupportsMultiPlatformBuild(a latest.Artifact) bool

func TagWithDigest

func TagWithDigest(tag, digest string) string

func TagWithImageID

func TagWithImageID(ctx context.Context, tag string, imageID string, localDocker docker.LocalDaemon) (string, error)

Types

type ArtifactBuilder

type ArtifactBuilder func(ctx context.Context, out io.Writer, artifact *latest.Artifact, tag string, platforms platform.Matcher) (string, error)

func WithLogFile

func WithLogFile(builder ArtifactBuilder, muted Muted) ArtifactBuilder

WithLogFile wraps an `artifactBuilder` so that it optionally outputs its logs to a file.

type ArtifactStore

type ArtifactStore interface {
	Record(a *latest.Artifact, tag string)
	GetImageTag(imageName string) (tag string, found bool)
	GetArtifacts(s []*latest.Artifact) ([]graph.Artifact, error)
}

ArtifactStore stores the results of each artifact build.

func NewArtifactStore

func NewArtifactStore() ArtifactStore

type Builder

type Builder interface {
	Build(ctx context.Context, out io.Writer, tags tag.ImageTags, platforms platform.Resolver, artifacts []*latest.Artifact) ([]graph.Artifact, error)

	// Prune removes images built with Skaffold
	Prune(context.Context, io.Writer) error
}

Builder is an interface to the Build API of Skaffold. It must build and make the resulting image accessible to the cluster. This could include pushing to a authorized repository or loading the nodes with the image. If artifacts is supplied, the builder should only rebuild those artifacts.

type BuilderMux

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

BuilderMux encapsulates multiple build configs.

func NewBuilderMux

func NewBuilderMux(cfg Config, store ArtifactStore, cache Cache, builder func(p latest.Pipeline) (PipelineBuilder, error)) (*BuilderMux, error)

NewBuilderMux returns an implementation of `build.BuilderMux`.

func (*BuilderMux) Build

func (b *BuilderMux) Build(ctx context.Context, out io.Writer, tags tag.ImageTags, resolver platform.Resolver, artifacts []*latest.Artifact) ([]graph.Artifact, error)

Build executes the specific image builder for each artifact in the given artifact slice.

func (*BuilderMux) Prune

func (b *BuilderMux) Prune(ctx context.Context, writer io.Writer) error

Prune removes built images.

type Cache

type Cache interface {
	AddArtifact(ctx context.Context, a graph.Artifact) error
}

type Config

type Config interface {
	GetPipelines() []latest.Pipeline
	DefaultRepo() *string
	Mode() config.RunMode
	MultiLevelRepo() *bool
	GlobalConfig() string
	BuildConcurrency() int
}

Config represents an interface for getting all config pipelines.

type ErrCustomBuildNoDockerfile

type ErrCustomBuildNoDockerfile struct{}

func (ErrCustomBuildNoDockerfile) Error

type ErrSyncMapNotSupported

type ErrSyncMapNotSupported struct{}

func (ErrSyncMapNotSupported) Error

type Muted

type Muted interface {
	MuteBuild() bool
}

type PipelineBuilder

type PipelineBuilder interface {

	// PreBuild executes any one-time setup required prior to starting any build on this builder
	PreBuild(ctx context.Context, out io.Writer) error

	// Build returns the `ArtifactBuilder` based on this build pipeline type
	Build(ctx context.Context, out io.Writer, artifact *latest.Artifact) ArtifactBuilder

	// PostBuild executes any one-time teardown required after all builds on this builder are complete
	PostBuild(ctx context.Context, out io.Writer) error

	// Concurrency specifies the max number of builds that can run at any one time. If concurrency is 0, then all builds can run in parallel.
	Concurrency() *int

	// Prune removes images built in this pipeline
	Prune(context.Context, io.Writer) error

	// PushImages specifies if the built image needs to be explicitly pushed to an image registry.
	PushImages() bool

	// SupportedPlatforms returns the platforms supported for building the image by this build pipeline type.
	SupportedPlatforms() platform.Matcher
}

PipelineBuilder is an interface for a specific Skaffold config pipeline build type. Current implementations are the `local`, `cluster` and `gcb`

Directories

Path Synopsis
ko

Jump to

Keyboard shortcuts

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