Documentation ¶
Index ¶
- Variables
- func BuildTargets(manifest model.Manifest) []model.TargetSpec
- func EarliestPendingAutoTriggerTarget(targets []*store.ManifestTarget) *store.ManifestTarget
- func FindDeployOnlyK8sManifestTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
- func FindLocalTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
- func FindTargetsNeedingAnyBuild(state store.EngineState) []*store.ManifestTarget
- func FindTargetsNeedingInitialBuild(targets []*store.ManifestTarget) []*store.ManifestTarget
- func FindUnresourcedYAML(targets []*store.ManifestTarget) *store.ManifestTarget
- func HasFileChangesTree(g model.TargetGraph, target model.TargetSpec, stateSet store.BuildStateSet) ([]model.TargetID, error)
- func HoldDisabledTargets(mts []*store.ManifestTarget, holds HoldSet)
- func HoldK8sTargets(targets []*store.ManifestTarget, holds HoldSet)
- func HoldLiveUpdateTargetsHandledByReconciler(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
- func HoldLiveUpdateTargetsWaitingOnDeploy(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
- func HoldTargetsWaitingOnCluster(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
- func HoldTargetsWaitingOnDependencies(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
- func HoldTargetsWithBuildingComponents(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
- func HoldUnparallelizableLocalTargets(targets []*store.ManifestTarget, holds map[model.ManifestName]store.Hold)
- func IsBuildingAnything(state store.EngineState) bool
- func IsBuildingUncategorizedYAML(state store.EngineState) bool
- func IsBuildingUnparallelizableLocalTarget(state store.EngineState) (model.ManifestName, model.TargetName, bool)
- func IsDontFallBackError(err error) bool
- func IsImageDeployedToDC(iTarget model.ImageTarget, dcTarget model.DockerComposeTarget) bool
- func IsImageDeployedToK8s(iTarget model.ImageTarget, kTarget model.K8sTarget) bool
- func IsLiveUpdateTargetWaitingOnDeploy(state store.EngineState, mt *store.ManifestTarget) bool
- func NextManifestNameToBuild(state store.EngineState) model.ManifestName
- func NextUnbuiltTargetToBuild(unbuilt []*store.ManifestTarget) *store.ManifestTarget
- func ShouldFallBackForErr(err error) bool
- func TargetsWithPendingEnableStatus(targets []*store.ManifestTarget) []model.TargetID
- func WrapDontFallBackError(err error) error
- type BuildAndDeployer
- type BuildHandler
- type DockerComposeBuildAndDeployer
- type DontFallBackError
- type HoldSet
- func (s HoldSet) AddHold(target *store.ManifestTarget, hold store.Hold)
- func (s HoldSet) Fill(targets []*store.ManifestTarget, hold store.Hold)
- func (s HoldSet) IsEligible(target *store.ManifestTarget) bool
- func (s HoldSet) RemoveIneligibleTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
- type ImageBuildAndDeployer
- type ImageBuilder
- func (icb *ImageBuilder) Build(ctx context.Context, iTarget model.ImageTarget, cluster *v1alpha1.Cluster, ...) (container.TaggedRefs, []v1alpha1.DockerImageStageStatus, error)
- func (icb *ImageBuilder) CanReuseRef(ctx context.Context, iTarget model.ImageTarget, ref reference.NamedTagged) (bool, error)
- type KINDLoader
- type LiveUpdateBuildAndDeployer
- type LiveUpdateInput
- type LocalTargetBuildAndDeployer
- type RedirectToNextBuilder
- type ReuseRefChecker
- type TargetQueue
Constants ¶
This section is empty.
Variables ¶
var BaseWireSet = wire.NewSet(wire.Value(dockerfile.Labels{}), v1alpha1.NewScheme, k8s.ProvideMinikubeClient, build.NewDockerBuilder, build.NewCustomBuilder, wire.Bind(new(build.DockerKubeConnection), new(*build.DockerBuilder)), NewDockerComposeBuildAndDeployer, NewImageBuildAndDeployer, NewLiveUpdateBuildAndDeployer, NewLocalTargetBuildAndDeployer, containerupdate.NewDockerUpdater, containerupdate.NewExecUpdater, NewImageBuilder, tracer.InitOpenTelemetry, liveupdates.ProvideUpdateMode, )
Functions ¶
func BuildTargets ¶ added in v0.19.5
func BuildTargets(manifest model.Manifest) []model.TargetSpec
Extract target specs from a manifest for BuildAndDeploy.
func EarliestPendingAutoTriggerTarget ¶
func EarliestPendingAutoTriggerTarget(targets []*store.ManifestTarget) *store.ManifestTarget
Go through all the manifests, and check: 1) all pending file changes 2) all pending dependency changes (where an image has been rebuilt by another manifest), and 3) all pending manifest changes The earliest one is the one we want.
If no targets are pending, return nil
func FindDeployOnlyK8sManifestTargets ¶
func FindDeployOnlyK8sManifestTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
func FindLocalTargets ¶
func FindLocalTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
func FindTargetsNeedingAnyBuild ¶ added in v0.23.2
func FindTargetsNeedingAnyBuild(state store.EngineState) []*store.ManifestTarget
Grab all the targets that are build-eligible from the engine state.
We apply this filter first, then layer on individual build decisions about what to build next. This MUST be the union of all checks in all downstream build decisions in NextTargetToBuild.
func FindTargetsNeedingInitialBuild ¶ added in v0.10.18
func FindTargetsNeedingInitialBuild(targets []*store.ManifestTarget) []*store.ManifestTarget
func FindUnresourcedYAML ¶
func FindUnresourcedYAML(targets []*store.ManifestTarget) *store.ManifestTarget
func HasFileChangesTree ¶ added in v0.19.5
func HasFileChangesTree(g model.TargetGraph, target model.TargetSpec, stateSet store.BuildStateSet) ([]model.TargetID, error)
Given a target, return all the target IDs in its tree of dependencies that have changed files.
func HoldDisabledTargets ¶ added in v0.22.14
func HoldDisabledTargets(mts []*store.ManifestTarget, holds HoldSet)
func HoldK8sTargets ¶ added in v0.17.5
func HoldK8sTargets(targets []*store.ManifestTarget, holds HoldSet)
func HoldLiveUpdateTargetsHandledByReconciler ¶ added in v0.23.0
func HoldLiveUpdateTargetsHandledByReconciler(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
Hold back live update targets that are being successfully handled by a reconciler.
func HoldLiveUpdateTargetsWaitingOnDeploy ¶ added in v0.17.5
func HoldLiveUpdateTargetsWaitingOnDeploy(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
func HoldTargetsWaitingOnCluster ¶ added in v0.23.4
func HoldTargetsWaitingOnCluster(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
We use the cluster to detect what architecture we're building for. Until the cluster connection has been established, we block any image builds.
func HoldTargetsWaitingOnDependencies ¶ added in v0.17.5
func HoldTargetsWaitingOnDependencies(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
func HoldTargetsWithBuildingComponents ¶ added in v0.17.5
func HoldTargetsWithBuildingComponents(state store.EngineState, mts []*store.ManifestTarget, holds HoldSet)
func HoldUnparallelizableLocalTargets ¶ added in v0.17.5
func HoldUnparallelizableLocalTargets(targets []*store.ManifestTarget, holds map[model.ManifestName]store.Hold)
func IsBuildingAnything ¶ added in v0.14.0
func IsBuildingAnything(state store.EngineState) bool
func IsBuildingUncategorizedYAML ¶ added in v0.16.0
func IsBuildingUncategorizedYAML(state store.EngineState) bool
func IsBuildingUnparallelizableLocalTarget ¶ added in v0.17.2
func IsBuildingUnparallelizableLocalTarget(state store.EngineState) (model.ManifestName, model.TargetName, bool)
func IsDontFallBackError ¶ added in v0.10.25
func IsImageDeployedToDC ¶ added in v0.19.5
func IsImageDeployedToDC(iTarget model.ImageTarget, dcTarget model.DockerComposeTarget) bool
Returns true if the given image is deployed to one of the given docker-compose targets. Note that some images are injected into other images, so may never be deployed.
func IsImageDeployedToK8s ¶ added in v0.19.5
func IsImageDeployedToK8s(iTarget model.ImageTarget, kTarget model.K8sTarget) bool
Returns true if the given image is deployed to one of the given k8s targets. Note that some images are injected into other images, so may never be deployed.
func IsLiveUpdateTargetWaitingOnDeploy ¶ added in v0.17.5
func IsLiveUpdateTargetWaitingOnDeploy(state store.EngineState, mt *store.ManifestTarget) bool
func NextManifestNameToBuild ¶
func NextManifestNameToBuild(state store.EngineState) model.ManifestName
func NextUnbuiltTargetToBuild ¶
func NextUnbuiltTargetToBuild(unbuilt []*store.ManifestTarget) *store.ManifestTarget
Helper function for ordering targets that have never been built before.
func ShouldFallBackForErr ¶ added in v0.10.25
func TargetsWithPendingEnableStatus ¶ added in v0.23.9
func TargetsWithPendingEnableStatus(targets []*store.ManifestTarget) []model.TargetID
func WrapDontFallBackError ¶ added in v0.10.25
Types ¶
type BuildAndDeployer ¶ added in v0.19.5
type BuildAndDeployer interface { // Returns a BuildResultSet containing output (build result and associated // file changes) for each target built in this call. The BuildResultSet only // contains results for newly built targets--if a target was clean and didn't // need to be built, it doesn't appear in the result set. // // BuildResult can be used to construct a set of BuildStates, which contain // the last successful builds of each target and the files changed since that // build. BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, currentState store.BuildStateSet) (store.BuildResultSet, error) }
type BuildHandler ¶ added in v0.14.0
type BuildHandler func( target model.TargetSpec, depResults []store.ImageBuildResult) (store.ImageBuildResult, error)
Allows the caller to inject its own build strategy for dirty targets.
type DockerComposeBuildAndDeployer ¶ added in v0.19.5
type DockerComposeBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewDockerComposeBuildAndDeployer ¶ added in v0.19.5
func NewDockerComposeBuildAndDeployer(dcc dockercompose.DockerComposeClient, dc docker.Client, ib *ImageBuilder, c build.Clock, ctrlClient ctrlclient.Client) *DockerComposeBuildAndDeployer
func ProvideDockerComposeBuildAndDeployer ¶ added in v0.19.5
func ProvideDockerComposeBuildAndDeployer(ctx context.Context, dcCli dockercompose.DockerComposeClient, dCli docker.Client, ctrlclient client.Client, dir *dirs.TiltDevDir) (*DockerComposeBuildAndDeployer, error)
func (*DockerComposeBuildAndDeployer) BuildAndDeploy ¶ added in v0.19.5
func (bd *DockerComposeBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, currentState store.BuildStateSet) (res store.BuildResultSet, err error)
type DontFallBackError ¶ added in v0.10.25
type DontFallBackError struct {
// contains filtered or unexported fields
}
Something is wrong enough that we shouldn't bother falling back to other BaD's -- they won't work.
func DontFallBackErrorf ¶ added in v0.10.25
func DontFallBackErrorf(msg string, a ...interface{}) DontFallBackError
type HoldSet ¶ added in v0.17.5
type HoldSet map[model.ManifestName]store.Hold
func NextTargetToBuild ¶
func NextTargetToBuild(state store.EngineState) (*store.ManifestTarget, HoldSet)
Algorithm to choose a manifest to build next.
func (HoldSet) AddHold ¶ added in v0.17.5
func (s HoldSet) AddHold(target *store.ManifestTarget, hold store.Hold)
func (HoldSet) Fill ¶ added in v0.17.5
func (s HoldSet) Fill(targets []*store.ManifestTarget, hold store.Hold)
For all the targets that should have built and don't have a prior Hold, add the given Hold.
func (HoldSet) IsEligible ¶ added in v0.22.14
func (s HoldSet) IsEligible(target *store.ManifestTarget) bool
func (HoldSet) RemoveIneligibleTargets ¶ added in v0.17.5
func (s HoldSet) RemoveIneligibleTargets(targets []*store.ManifestTarget) []*store.ManifestTarget
type ImageBuildAndDeployer ¶ added in v0.19.5
type ImageBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewImageBuildAndDeployer ¶ added in v0.19.5
func NewImageBuildAndDeployer( db *build.DockerBuilder, customBuilder *build.CustomBuilder, k8sClient k8s.Client, env k8s.Env, kubeContext k8s.KubeContext, analytics *analytics.TiltAnalytics, c build.Clock, kl KINDLoader, ctrlClient ctrlclient.Client, r *kubernetesapply.Reconciler, ) *ImageBuildAndDeployer
func ProvideImageBuildAndDeployer ¶ added in v0.19.5
func ProvideImageBuildAndDeployer(ctx context.Context, docker2 docker.Client, kClient k8s.Client, env k8s.Env, kubeContext k8s.KubeContext, clusterEnv docker.ClusterEnv, dir *dirs.TiltDevDir, clock build.Clock, kp KINDLoader, analytics2 *analytics.TiltAnalytics, ctrlclient client.Client, st store.RStore, execer localexec.Execer) (*ImageBuildAndDeployer, error)
func (*ImageBuildAndDeployer) BuildAndDeploy ¶ added in v0.19.5
func (ibd *ImageBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (resultSet store.BuildResultSet, err error)
type ImageBuilder ¶ added in v0.19.5
type ImageBuilder struct {
// contains filtered or unexported fields
}
func NewImageBuilder ¶ added in v0.19.5
func NewImageBuilder(db *build.DockerBuilder, custb *build.CustomBuilder) *ImageBuilder
func (*ImageBuilder) Build ¶ added in v0.19.5
func (icb *ImageBuilder) Build(ctx context.Context, iTarget model.ImageTarget, cluster *v1alpha1.Cluster, imageMaps map[types.NamespacedName]*v1alpha1.ImageMap, ps *build.PipelineState) (container.TaggedRefs, []v1alpha1.DockerImageStageStatus, error)
func (*ImageBuilder) CanReuseRef ¶ added in v0.19.5
func (icb *ImageBuilder) CanReuseRef(ctx context.Context, iTarget model.ImageTarget, ref reference.NamedTagged) (bool, error)
type KINDLoader ¶ added in v0.19.5
type KINDLoader interface {
LoadToKIND(ctx context.Context, ref reference.NamedTagged) error
}
func NewKINDLoader ¶ added in v0.19.5
func NewKINDLoader(env k8s.Env, clusterName k8s.ClusterName) KINDLoader
type LiveUpdateBuildAndDeployer ¶ added in v0.19.5
type LiveUpdateBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewLiveUpdateBuildAndDeployer ¶ added in v0.19.5
func NewLiveUpdateBuildAndDeployer(luReconciler *ctrlliveupdate.Reconciler, c build.Clock) *LiveUpdateBuildAndDeployer
func (*LiveUpdateBuildAndDeployer) BuildAndDeploy ¶ added in v0.19.5
func (lubad *LiveUpdateBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (store.BuildResultSet, error)
type LiveUpdateInput ¶ added in v0.22.12
type LiveUpdateInput struct { ID model.TargetID // LiveUpdate API object name. Name string Spec v1alpha1.LiveUpdateSpec ctrlliveupdate.Input }
Info needed to perform a live update
func (LiveUpdateInput) Empty ¶ added in v0.22.12
func (lui LiveUpdateInput) Empty() bool
type LocalTargetBuildAndDeployer ¶ added in v0.19.5
type LocalTargetBuildAndDeployer struct {
// contains filtered or unexported fields
}
TODO(maia): CommandRunner interface for testability
func NewLocalTargetBuildAndDeployer ¶ added in v0.19.5
func NewLocalTargetBuildAndDeployer( c build.Clock, ctrlClient ctrlclient.Client, cmds *cmd.Controller) *LocalTargetBuildAndDeployer
func (*LocalTargetBuildAndDeployer) BuildAndDeploy ¶ added in v0.19.5
func (bd *LocalTargetBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (resultSet store.BuildResultSet, err error)
type RedirectToNextBuilder ¶ added in v0.10.25
Nothing is on fire, this is an expected case like a container builder being passed a build with no attached container. `level` indicates at what log level this error should be shown to the user
func RedirectToNextBuilderInfof ¶ added in v0.10.25
func RedirectToNextBuilderInfof(msg string, a ...interface{}) RedirectToNextBuilder
func SilentRedirectToNextBuilderf ¶ added in v0.10.25
func SilentRedirectToNextBuilderf(msg string, a ...interface{}) RedirectToNextBuilder
func WrapRedirectToNextBuilder ¶ added in v0.10.25
func WrapRedirectToNextBuilder(err error, level logger.Level) RedirectToNextBuilder
func (RedirectToNextBuilder) UserFacing ¶ added in v0.14.0
func (redir RedirectToNextBuilder) UserFacing() bool
UserFacing indicates whether this error should be messaged to the user by default. Should be `true` for messages we always want the user to read, e.g. "couldn't Live Update because we matched a fall_back_on file".
type ReuseRefChecker ¶ added in v0.16.0
type ReuseRefChecker func(ctx context.Context, iTarget model.ImageTarget, namedTagged reference.NamedTagged) (bool, error)
type TargetQueue ¶ added in v0.14.0
type TargetQueue struct {
// contains filtered or unexported fields
}
A little data structure to help iterate through dirty targets in dependency order.
func NewImageTargetQueue ¶ added in v0.14.0
func NewImageTargetQueue(ctx context.Context, iTargets []model.ImageTarget, state store.BuildStateSet, canReuseRef ReuseRefChecker) (*TargetQueue, error)
func (*TargetQueue) AllResults ¶ added in v0.14.1
func (q *TargetQueue) AllResults() store.ImageBuildResultSet
All results for targets in the current queue.
func (*TargetQueue) CountBuilds ¶ added in v0.14.1
func (q *TargetQueue) CountBuilds() int
func (*TargetQueue) NewResults ¶ added in v0.14.1
func (q *TargetQueue) NewResults() store.ImageBuildResultSet
New results that were built with the current queue. Omits results that were re-used previous builds.
Returns results that the BuildAndDeploy contract expects.
func (*TargetQueue) ReusedResults ¶ added in v0.14.1
func (q *TargetQueue) ReusedResults() store.ImageBuildResultSet
Reused results that were not built with the current queue.
Used for printing out which builds are cached from previous builds.
func (*TargetQueue) RunBuilds ¶ added in v0.14.0
func (q *TargetQueue) RunBuilds(handler BuildHandler) error
Source Files ¶
- build_and_deployer.go
- build_control.go
- build_errors.go
- buildcontroller.go
- docker_compose_build_and_deployer.go
- extractors.go
- hold_set.go
- image_build_and_deployer.go
- image_builder.go
- live_update_build_and_deployer.go
- live_update_state_tree.go
- local_target_build_and_deployer.go
- target_queue.go
- wire_gen.go