README
¶
Engine Design Doc
Engine is primarily a for
loop that takes inputs from a variety of sources, updates state, and makes a decision based off of that state. The rough shape of the for loop is as follows:
state := &state{}
for {
select {
// sources like local filesystem, kubernetes, ui, etc
case ev := <- fsCh:
e.handleFsEvent(ev)
case ev := <- k8sCh:
e.handleK8sEvent(ev)
}
// decide what to do: start a pipeline, stop a pipeline
actions := handle(state)
// tell subscribers what we took
updateSubscribers(actions, state.copy())
}
When state changes, and only when state changes, can we make decisions about what to do. Only after actions have been taken do we tell subscribers.
Rules
- No blocking I/O in the for loop
- No long operations in the for loop
- Actions taken in
handle
shouldn’t directly send to channels that thisfor
select
s on.
Documentation
¶
Index ¶
- Variables
- func NewErrorAction(err error) store.ErrorAction
- func NewImageAndCacheBuilder(ib build.ImageBuilder, cb build.CacheBuilder, custb build.CustomBuilder, ...) *imageAndCacheBuilder
- func NewLogActionLogger(ctx context.Context, dispatch func(action store.Action)) logger.Logger
- func NewTiltfileLogWriter(s store.RStore) *tiltfileLogWriter
- func ParseYAMLFromManifests(manifests ...model.Manifest) ([]k8s.K8sEntity, error)
- func PopulatePortForwards(m model.Manifest, pod store.Pod) []model.PortForward
- func ProvideSubscribers(hud hud.HeadsUpDisplay, pw *PodWatcher, sw *ServiceWatcher, plm *PodLogManager, ...) []store.Subscriber
- func ProvideTimerMaker() timerMaker
- type AnalyticsReporter
- type BuildAndDeployer
- type BuildCompleteAction
- type BuildController
- type BuildHandler
- type BuildLogAction
- type BuildLogActionWriter
- type BuildOrder
- type BuildStartedAction
- type CompositeBuildAndDeployer
- type ConfigsController
- type ConfigsReloadStartedAction
- type ConfigsReloadedAction
- type DeployIDAction
- type DockerComposeBuildAndDeployer
- type DockerComposeEventAction
- type DockerComposeEventWatcher
- type DockerComposeGlobalLogWriter
- type DockerComposeLogAction
- type DockerComposeLogActionWriter
- type DockerComposeLogManager
- type DontFallBackError
- type FallbackTester
- type FsWatcherMaker
- type GlobalYAMLApplyCompleteAction
- type GlobalYAMLApplyStartedAction
- type GlobalYAMLBuildController
- type HardCancelReader
- type HudStoppedAction
- type ImageBuildAndDeployer
- type ImageController
- type InitAction
- type KINDPusher
- type LocalContainerBuildAndDeployer
- type ManifestReloadedAction
- type PodChangeAction
- type PodLogAction
- type PodLogActionWriter
- type PodLogManager
- type PodLogWatch
- type PodWatch
- type PodWatcher
- type PodWatcherMaker
- type PortForwardController
- type ProfilerManager
- type RedirectToNextBuilder
- type ServiceChangeAction
- type ServiceWatcher
- type ServiceWatcherMaker
- type SyncletBuildAndDeployer
- type SyncletManager
- type TargetQueue
- type TiltfileLogAction
- type UpdateMode
- type UpdateModeFlag
- type Upper
- type WatchManager
- type WatchableTarget
Constants ¶
This section is empty.
Variables ¶
var AllUpdateModes = []UpdateMode{
UpdateModeAuto,
UpdateModeImage,
UpdateModeNaive,
UpdateModeSynclet,
UpdateModeContainer,
UpdateModeKubectlExec,
}
var ConfigsTargetID = model.TargetID{
Type: model.TargetTypeConfigs,
Name: "singleton",
}
var DeployerBaseWireSet = wire.NewSet(wire.Value(dockerfile.Labels{}), wire.Value(UpperReducer), minikube.ProvideMinikubeClient, docker.ProvideEnv, build.DefaultImageBuilder, build.NewCacheBuilder, build.NewDockerImageBuilder, build.NewExecCustomBuilder, wire.Bind(new(build.CustomBuilder), new(build.ExecCustomBuilder)), NewImageBuildAndDeployer, build.NewContainerUpdater, NewSyncletBuildAndDeployer,
NewLocalContainerBuildAndDeployer,
NewDockerComposeBuildAndDeployer,
NewImageAndCacheBuilder,
DefaultBuildOrder, wire.Bind(new(BuildAndDeployer), new(CompositeBuildAndDeployer)), NewCompositeBuildAndDeployer,
ProvideUpdateMode,
NewGlobalYAMLBuildController,
)
var DeployerWireSet = wire.NewSet(
DeployerBaseWireSet,
NewSyncletManager,
)
var DeployerWireSetTest = wire.NewSet(
DeployerBaseWireSet,
NewSyncletManagerForTests,
)
var UpperReducer = store.Reducer(func(ctx context.Context, state *store.EngineState, action store.Action) {
var err error
switch action := action.(type) {
case InitAction:
err = handleInitAction(ctx, state, action)
case store.ErrorAction:
err = action.Error
case hud.ExitAction:
handleExitAction(state, action)
case targetFilesChangedAction:
handleFSEvent(ctx, state, action)
case PodChangeAction:
handlePodChangeAction(ctx, state, action.Pod)
case ServiceChangeAction:
handleServiceEvent(ctx, state, action)
case PodLogAction:
handlePodLogAction(state, action)
case BuildLogAction:
handleBuildLogAction(state, action)
case BuildCompleteAction:
err = handleBuildCompleted(ctx, state, action)
case BuildStartedAction:
handleBuildStarted(ctx, state, action)
case DeployIDAction:
handleDeployIDAction(ctx, state, action)
case store.LogAction:
handleLogAction(state, action)
case GlobalYAMLApplyStartedAction:
handleGlobalYAMLApplyStarted(ctx, state, action)
case GlobalYAMLApplyCompleteAction:
handleGlobalYAMLApplyComplete(ctx, state, action)
case ConfigsReloadStartedAction:
handleConfigsReloadStarted(ctx, state, action)
case ConfigsReloadedAction:
handleConfigsReloaded(ctx, state, action)
case DockerComposeEventAction:
handleDockerComposeEvent(ctx, state, action)
case DockerComposeLogAction:
handleDockerComposeLogAction(state, action)
case view.AppendToTriggerQueueAction:
appendToTriggerQueue(state, action.Name)
case hud.StartProfilingAction:
handleStartProfilingAction(state)
case hud.StopProfilingAction:
handleStopProfilingAction(state)
case hud.SetLogTimestampsAction:
handleLogTimestampsAction(state, action)
case client.SailRoomConnectedAction:
handleSailRoomConnectedAction(ctx, state, action)
case TiltfileLogAction:
handleTiltfileLogAction(ctx, state, action)
case hud.DumpEngineStateAction:
handleDumpEngineStateAction(ctx, state)
default:
err = fmt.Errorf("unrecognized action: %T", action)
}
if err != nil {
state.PermanentError = err
}
})
Functions ¶
func NewErrorAction ¶
func NewErrorAction(err error) store.ErrorAction
func NewImageAndCacheBuilder ¶ added in v0.6.0
func NewImageAndCacheBuilder(ib build.ImageBuilder, cb build.CacheBuilder, custb build.CustomBuilder, updateMode UpdateMode) *imageAndCacheBuilder
func NewLogActionLogger ¶ added in v0.4.1
func NewLogActionLogger(ctx context.Context, dispatch func(action store.Action)) logger.Logger
func NewTiltfileLogWriter ¶ added in v0.6.0
func NewTiltfileLogWriter(s store.RStore) *tiltfileLogWriter
func ParseYAMLFromManifests ¶
func ParseYAMLFromManifests(manifests ...model.Manifest) ([]k8s.K8sEntity, error)
func PopulatePortForwards ¶
func PopulatePortForwards(m model.Manifest, pod store.Pod) []model.PortForward
Extract the port-forward specs from the manifest. If any of them have ContainerPort = 0, populate them with the default port in the pod spec. Quietly drop forwards that we can't populate.
func ProvideSubscribers ¶ added in v0.8.0
func ProvideSubscribers(
hud hud.HeadsUpDisplay,
pw *PodWatcher,
sw *ServiceWatcher,
plm *PodLogManager,
pfc *PortForwardController,
fwm *WatchManager,
bc *BuildController,
ic *ImageController,
gybc *GlobalYAMLBuildController,
cc *ConfigsController,
dcw *DockerComposeEventWatcher,
dclm *DockerComposeLogManager,
pm *ProfilerManager,
sm SyncletManager,
ar *AnalyticsReporter,
hudsc *server.HeadsUpServerController,
sail client.SailClient) []store.Subscriber
func ProvideTimerMaker ¶
func ProvideTimerMaker() timerMaker
Types ¶
type AnalyticsReporter ¶ added in v0.7.11
type AnalyticsReporter struct {
// contains filtered or unexported fields
}
func ProvideAnalyticsReporter ¶ added in v0.7.11
func ProvideAnalyticsReporter(a analytics.Analytics, st *store.Store) *AnalyticsReporter
type BuildAndDeployer ¶
type BuildAndDeployer interface {
// BuildAndDeploy builds and deployed the specified target specs.
//
// Returns a BuildResult that expresses the outputs(s) of the build.
//
// 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 BuildCompleteAction ¶
type BuildCompleteAction struct {
Result store.BuildResultSet
Error error
}
func NewBuildCompleteAction ¶
func NewBuildCompleteAction(result store.BuildResultSet, err error) BuildCompleteAction
type BuildController ¶
type BuildController struct {
// contains filtered or unexported fields
}
func NewBuildController ¶
func NewBuildController(b BuildAndDeployer) *BuildController
func (*BuildController) DisableForTesting ¶ added in v0.1.0
func (c *BuildController) DisableForTesting()
type BuildHandler ¶ added in v0.7.11
type BuildHandler func(
target model.TargetSpec,
state store.BuildState,
depResults []store.BuildResult) (store.BuildResult, error)
Allows the caller to inject its own build strategy for dirty targets.
type BuildLogAction ¶ added in v0.2.0
type BuildLogAction struct {
store.LogEvent
ManifestName model.ManifestName
}
type BuildLogActionWriter ¶ added in v0.2.0
type BuildLogActionWriter struct {
// contains filtered or unexported fields
}
type BuildOrder ¶
type BuildOrder []BuildAndDeployer
func DefaultBuildOrder ¶
func DefaultBuildOrder(sbad *SyncletBuildAndDeployer, cbad *LocalContainerBuildAndDeployer, ibad *ImageBuildAndDeployer, dcbad *DockerComposeBuildAndDeployer, env k8s.Env, updMode UpdateMode, runtime container.Runtime) BuildOrder
type BuildStartedAction ¶
type BuildStartedAction struct {
ManifestName model.ManifestName
StartTime time.Time
FilesChanged []string
Reason model.BuildReason
}
type CompositeBuildAndDeployer ¶
type CompositeBuildAndDeployer struct {
// contains filtered or unexported fields
}
CompositeBuildAndDeployer tries to run each builder in order. If a builder emits an error, it uses the FallbackTester to determine whether the error is critical enough to stop the whole pipeline, or to fallback to the next builder.
func NewCompositeBuildAndDeployer ¶
func NewCompositeBuildAndDeployer(builders BuildOrder) *CompositeBuildAndDeployer
func (*CompositeBuildAndDeployer) BuildAndDeploy ¶
func (composite *CompositeBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, currentState store.BuildStateSet) (store.BuildResultSet, error)
type ConfigsController ¶ added in v0.2.0
type ConfigsController struct {
// contains filtered or unexported fields
}
func NewConfigsController ¶ added in v0.2.0
func NewConfigsController(tfl tiltfile.TiltfileLoader) *ConfigsController
func (*ConfigsController) DisableForTesting ¶ added in v0.2.0
func (cc *ConfigsController) DisableForTesting(disabled bool)
type ConfigsReloadStartedAction ¶ added in v0.2.0
type ConfigsReloadStartedAction struct {
FilesChanged map[string]bool
StartTime time.Time
}
type ConfigsReloadedAction ¶ added in v0.2.0
type ConfigsReloadedAction struct {
Manifests []model.Manifest
GlobalYAML model.Manifest
TiltIgnoreContents string
ConfigFiles []string
StartTime time.Time
FinishTime time.Time
Err error
Warnings []string
}
type DeployIDAction ¶ added in v0.7.11
type DeployIDAction struct {
TargetID model.TargetID
DeployID model.DeployID
}
func NewDeployIDAction ¶ added in v0.7.11
func NewDeployIDAction(id model.TargetID, dID model.DeployID) DeployIDAction
func NewDeployIDActionsForTargets ¶ added in v0.7.11
func NewDeployIDActionsForTargets(ids []model.TargetID, dID model.DeployID) []DeployIDAction
type DockerComposeBuildAndDeployer ¶ added in v0.4.1
type DockerComposeBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewDockerComposeBuildAndDeployer ¶ added in v0.4.1
func NewDockerComposeBuildAndDeployer(dcc dockercompose.DockerComposeClient, dc docker.Client,
icb *imageAndCacheBuilder, c build.Clock) *DockerComposeBuildAndDeployer
func (*DockerComposeBuildAndDeployer) BuildAndDeploy ¶ added in v0.4.1
func (bd *DockerComposeBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, currentState store.BuildStateSet) (store.BuildResultSet, error)
type DockerComposeEventAction ¶ added in v0.4.1
type DockerComposeEventAction struct {
Event dockercompose.Event
}
type DockerComposeEventWatcher ¶ added in v0.4.1
type DockerComposeEventWatcher struct {
// contains filtered or unexported fields
}
func NewDockerComposeEventWatcher ¶ added in v0.4.1
func NewDockerComposeEventWatcher(dcc dockercompose.DockerComposeClient) *DockerComposeEventWatcher
type DockerComposeGlobalLogWriter ¶ added in v0.4.1
type DockerComposeGlobalLogWriter struct {
// contains filtered or unexported fields
}
type DockerComposeLogAction ¶ added in v0.4.1
type DockerComposeLogAction struct {
store.LogEvent
ManifestName model.ManifestName
}
type DockerComposeLogActionWriter ¶ added in v0.4.1
type DockerComposeLogActionWriter struct {
// contains filtered or unexported fields
}
type DockerComposeLogManager ¶ added in v0.4.1
type DockerComposeLogManager struct {
// contains filtered or unexported fields
}
Collects logs from running docker-compose services.
func NewDockerComposeLogManager ¶ added in v0.4.1
func NewDockerComposeLogManager(dcc dockercompose.DockerComposeClient) *DockerComposeLogManager
type DontFallBackError ¶ added in v0.2.0
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.2.0
func DontFallBackErrorf(msg string, a ...interface{}) DontFallBackError
func WrapDontFallBackError ¶ added in v0.2.0
func WrapDontFallBackError(err error) DontFallBackError
type FallbackTester ¶
type FallbackTester func(error) bool
type FsWatcherMaker ¶
type FsWatcherMaker func() (watch.Notify, error)
func ProvideFsWatcherMaker ¶
func ProvideFsWatcherMaker() FsWatcherMaker
type GlobalYAMLApplyCompleteAction ¶ added in v0.1.0
type GlobalYAMLApplyCompleteAction struct {
Error error
}
type GlobalYAMLApplyStartedAction ¶ added in v0.1.0
type GlobalYAMLApplyStartedAction struct{}
type GlobalYAMLBuildController ¶ added in v0.1.0
type GlobalYAMLBuildController struct {
// contains filtered or unexported fields
}
func NewGlobalYAMLBuildController ¶ added in v0.1.0
func NewGlobalYAMLBuildController(k8sClient k8s.Client) *GlobalYAMLBuildController
type HardCancelReader ¶ added in v0.2.0
type HardCancelReader struct {
// contains filtered or unexported fields
}
A reader that will stop returning data after its context has been canceled.
If any data is read from the underlying stream after the cancel happens, throw the data out.
func NewHardCancelReader ¶ added in v0.2.0
func NewHardCancelReader(ctx context.Context, reader io.Reader) HardCancelReader
type HudStoppedAction ¶ added in v0.1.0
type HudStoppedAction struct {
// contains filtered or unexported fields
}
func NewHudStoppedAction ¶ added in v0.1.0
func NewHudStoppedAction(err error) HudStoppedAction
type ImageBuildAndDeployer ¶
type ImageBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewImageBuildAndDeployer ¶
func NewImageBuildAndDeployer(
b build.ImageBuilder,
cacheBuilder build.CacheBuilder,
customBuilder build.CustomBuilder,
k8sClient k8s.Client,
env k8s.Env,
analytics analytics.Analytics,
updMode UpdateMode,
c build.Clock,
runtime container.Runtime,
kp KINDPusher,
) *ImageBuildAndDeployer
func (*ImageBuildAndDeployer) BuildAndDeploy ¶
func (ibd *ImageBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (resultSet store.BuildResultSet, err error)
func (*ImageBuildAndDeployer) SetInjectSynclet ¶
func (ibd *ImageBuildAndDeployer) SetInjectSynclet(inject bool)
Turn on synclet injection. Should be called before any builds.
type ImageController ¶ added in v0.1.0
type ImageController struct {
// contains filtered or unexported fields
}
Handles image garbage collection.
func NewImageController ¶ added in v0.1.0
func NewImageController(reaper build.ImageReaper) *ImageController
type InitAction ¶
type InitAction struct {
WatchFiles bool
Manifests []model.Manifest
GlobalYAMLManifest model.Manifest
TiltfilePath string
ConfigFiles []string
InitManifests []model.ManifestName
TriggerMode model.TriggerMode
TiltBuild model.TiltBuild
StartTime time.Time
FinishTime time.Time
Err error
Warnings []string
ExecuteTiltfile bool
EnableSail bool
}
type KINDPusher ¶ added in v0.7.11
type KINDPusher interface {
PushToKIND(ctx context.Context, ref reference.NamedTagged, w io.Writer) error
}
func NewKINDPusher ¶ added in v0.7.11
func NewKINDPusher() KINDPusher
type LocalContainerBuildAndDeployer ¶
type LocalContainerBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewLocalContainerBuildAndDeployer ¶
func NewLocalContainerBuildAndDeployer(cu *build.ContainerUpdater,
analytics analytics.Analytics, env k8s.Env) *LocalContainerBuildAndDeployer
func (*LocalContainerBuildAndDeployer) BuildAndDeploy ¶
func (cbd *LocalContainerBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (store.BuildResultSet, error)
type ManifestReloadedAction ¶
type ManifestReloadedAction struct {
OldManifest model.Manifest
NewManifest model.Manifest
Error error
}
type PodChangeAction ¶
type PodChangeAction struct {
Pod *v1.Pod
}
func NewPodChangeAction ¶
func NewPodChangeAction(pod *v1.Pod) PodChangeAction
type PodLogAction ¶
type PodLogAction struct {
store.LogEvent
ManifestName model.ManifestName
PodID k8s.PodID
}
type PodLogActionWriter ¶
type PodLogActionWriter struct {
// contains filtered or unexported fields
}
type PodLogManager ¶
type PodLogManager struct {
// contains filtered or unexported fields
}
Collects logs from deployed containers.
func NewPodLogManager ¶
func NewPodLogManager(kClient k8s.Client) *PodLogManager
type PodLogWatch ¶
type PodLogWatch struct {
// contains filtered or unexported fields
}
type PodWatcher ¶
type PodWatcher struct {
// contains filtered or unexported fields
}
func NewPodWatcher ¶
func NewPodWatcher(kCli k8s.Client) *PodWatcher
type PodWatcherMaker ¶
type PodWatcherMaker func(context.Context, *store.Store) error
type PortForwardController ¶
type PortForwardController struct {
// contains filtered or unexported fields
}
func NewPortForwardController ¶
func NewPortForwardController(kClient k8s.Client) *PortForwardController
type ProfilerManager ¶ added in v0.4.2
type ProfilerManager struct {
// contains filtered or unexported fields
}
func NewProfilerManager ¶ added in v0.4.2
func NewProfilerManager() *ProfilerManager
func (*ProfilerManager) OnChange ¶ added in v0.4.2
func (p *ProfilerManager) OnChange(ctx context.Context, st store.RStore)
type RedirectToNextBuilder ¶ added in v0.2.0
type RedirectToNextBuilder struct {
// contains filtered or unexported fields
}
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.7.12
func RedirectToNextBuilderInfof(msg string, a ...interface{}) RedirectToNextBuilder
func SilentRedirectToNextBuilderf ¶ added in v0.7.12
func SilentRedirectToNextBuilderf(msg string, a ...interface{}) RedirectToNextBuilder
func WrapRedirectToNextBuilder ¶ added in v0.2.0
func WrapRedirectToNextBuilder(err error, level logger.Level) RedirectToNextBuilder
type ServiceChangeAction ¶
type ServiceChangeAction struct {
Service *v1.Service
URL *url.URL
}
func NewServiceChangeAction ¶
func NewServiceChangeAction(service *v1.Service, url *url.URL) ServiceChangeAction
type ServiceWatcher ¶
type ServiceWatcher struct {
// contains filtered or unexported fields
}
func NewServiceWatcher ¶
func NewServiceWatcher(kCli k8s.Client, nodeIP k8s.NodeIP) *ServiceWatcher
type ServiceWatcherMaker ¶
type ServiceWatcherMaker func(context.Context, *store.Store) error
type SyncletBuildAndDeployer ¶
type SyncletBuildAndDeployer struct {
// contains filtered or unexported fields
}
func NewSyncletBuildAndDeployer ¶
func NewSyncletBuildAndDeployer(sm SyncletManager, kCli k8s.Client, updateMode UpdateMode) *SyncletBuildAndDeployer
func (*SyncletBuildAndDeployer) BuildAndDeploy ¶
func (sbd *SyncletBuildAndDeployer) BuildAndDeploy(ctx context.Context, st store.RStore, specs []model.TargetSpec, stateSet store.BuildStateSet) (store.BuildResultSet, error)
func (*SyncletBuildAndDeployer) UpdateInCluster ¶ added in v0.7.11
func (sbd *SyncletBuildAndDeployer) UpdateInCluster(ctx context.Context,
liveUpdateState liveUpdateStateTree) (store.BuildResultSet, error)
type SyncletManager ¶
type SyncletManager struct {
// contains filtered or unexported fields
}
func NewSyncletManager ¶
func NewSyncletManager(kCli k8s.Client) SyncletManager
func NewSyncletManagerForTests ¶
func NewSyncletManagerForTests(kCli k8s.Client, fakeCli synclet.SyncletClient) SyncletManager
func (SyncletManager) ClientForPod ¶
func (sm SyncletManager) ClientForPod(ctx context.Context, podID k8s.PodID, ns k8s.Namespace) (synclet.SyncletClient, error)
type TargetQueue ¶ added in v0.7.11
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.7.11
func NewImageTargetQueue(iTargets []model.ImageTarget, state store.BuildStateSet) (*TargetQueue, error)
func (*TargetQueue) CountDirty ¶ added in v0.7.11
func (q *TargetQueue) CountDirty() int
type TiltfileLogAction ¶ added in v0.6.0
type TiltfileLogAction struct {
store.LogEvent
}
type UpdateMode ¶
type UpdateMode string
var (
// Auto-pick the build mode based on
UpdateModeAuto UpdateMode = "auto"
// Only do image builds
UpdateModeImage UpdateMode = "image"
// Only do image builds from scratch
UpdateModeNaive UpdateMode = "naive"
// Deploy a synclet to make container updates faster
UpdateModeSynclet UpdateMode = "synclet"
// Update containers in-place. This mode only works with DockerForDesktop and Minikube.
// If you try to use this mode with a different K8s cluster type, we will return an error
UpdateModeContainer UpdateMode = "container"
// Use `kubectl exec`
UpdateModeKubectlExec UpdateMode = "exec"
)
func ProvideUpdateMode ¶
func ProvideUpdateMode(flag UpdateModeFlag, env k8s.Env, runtime container.Runtime) (UpdateMode, error)
type UpdateModeFlag ¶
type UpdateModeFlag UpdateMode
A type to bind to flag values that need validation.
type Upper ¶
type Upper struct {
// contains filtered or unexported fields
}
TODO(nick): maybe this should be called 'BuildEngine' or something? Upper seems like a poor and undescriptive name.
type WatchManager ¶
type WatchManager struct {
// contains filtered or unexported fields
}
func NewWatchManager ¶
func NewWatchManager(watcherMaker FsWatcherMaker, timerMaker timerMaker) *WatchManager
func (*WatchManager) DisableForTesting ¶ added in v0.2.0
func (w *WatchManager) DisableForTesting()
type WatchableTarget ¶ added in v0.5.1
type WatchableTarget interface {
ignore.IgnorableTarget
Dependencies() []string
ID() model.TargetID
}
If you modify this interface, you might also need to update the watchRulesMatch function below.
Source Files
¶
- actions.go
- analytics_reporter.go
- build_and_deployer.go
- build_errors.go
- buildcontroller.go
- configs_controller.go
- docker_compose_build_and_deployer.go
- docker_compose_event_watcher.go
- docker_compose_log_manager.go
- extractors.go
- global_yaml_buildcontroller.go
- image_and_cache_builder.go
- image_build_and_deployer.go
- imagecontroller.go
- live_update_state_tree.go
- local_container_build_and_deployer.go
- logger.go
- mode.go
- parse.go
- pod_watch.go
- podlogmanager.go
- portforwardcontroller.go
- profiler.go
- reader.go
- service_watch.go
- subscribers.go
- synclet_build_and_deployer.go
- synclet_manager.go
- target_queue.go
- tiltfile_log_writer.go
- upper.go
- watchmanager.go
- wire_gen.go