Documentation ¶
Index ¶
- Constants
- Variables
- func ArgListToString(args []string) string
- func ChangesInvalidateBuild(old, new Manifest) bool
- func ImageTargetsByID(iTargets []ImageTarget) map[TargetID]ImageTarget
- func LinksToURLStrings(lns []Link) []string
- func LocalRefSelectorsForManifests(manifests []Manifest) []container.RefSelector
- func MakeTargetMap(targets []TargetSpec) map[TargetID]TargetSpec
- func NewRelativeFileOrChildMatcher(baseDir string, paths ...string) fileOrChildMatcher
- func NewSimpleFileMatcher(paths ...string) (fileMatcher, error)
- func TargetIDSet(tids []TargetID) map[TargetID]bool
- func UnrecognizedWebModeError(v string) error
- func ValidTriggerMode(tm TriggerMode) bool
- func ValidateAPIServerName(name APIServerName) error
- type APIServerName
- type BuildDetails
- type BuildReason
- type BuildRecord
- type BuildType
- type ByURL
- type Cmd
- func ToBatCmd(cmd string) Cmd
- func ToHostCmd(cmd string) Cmd
- func ToHostCmdInDir(cmd string, dir string) Cmd
- func ToHostCmdInDirWithEnv(cmd string, dir string, env []string) Cmd
- func ToUnixCmd(cmd string) Cmd
- func ToUnixCmdInDir(cmd string, dir string) Cmd
- func ToUnixCmds(cmds []string) []Cmd
- func TrySquash(runs []Cmd) []Cmd
- type CompositePathMatcher
- type CustomBuild
- type DockerBuild
- type DockerBuildArgs
- type DockerBuildTarget
- type DockerComposeTarget
- func (t DockerComposeTarget) Dependencies() []string
- func (t DockerComposeTarget) DependencyIDs() []TargetID
- func (t DockerComposeTarget) Dockerignores() []Dockerignore
- func (t DockerComposeTarget) Empty() bool
- func (t DockerComposeTarget) ID() TargetID
- func (t DockerComposeTarget) IgnoredLocalDirectories() []string
- func (t DockerComposeTarget) LocalPaths() []string
- func (t DockerComposeTarget) LocalRepos() []LocalGitRepo
- func (t DockerComposeTarget) ManifestName() ManifestName
- func (t DockerComposeTarget) PublishedPorts() []int
- func (t DockerComposeTarget) TiltFilename() string
- func (dc DockerComposeTarget) Validate() error
- func (t DockerComposeTarget) WithBuildPath(buildPath string) DockerComposeTarget
- func (t DockerComposeTarget) WithDependencyIDs(ids []TargetID) DockerComposeTarget
- func (t DockerComposeTarget) WithDockerignores(dockerignores []Dockerignore) DockerComposeTarget
- func (t DockerComposeTarget) WithIgnoredLocalDirectories(dirs []string) DockerComposeTarget
- func (t DockerComposeTarget) WithLinks(links []Link) DockerComposeTarget
- func (t DockerComposeTarget) WithPublishedPorts(ports []int) DockerComposeTarget
- func (t DockerComposeTarget) WithRepos(repos []LocalGitRepo) DockerComposeTarget
- func (t DockerComposeTarget) WithTiltFilename(f string) DockerComposeTarget
- type DockerPruneSettings
- type Dockerignore
- type ImageTarget
- func (i ImageTarget) CustomBuildInfo() CustomBuild
- func (i ImageTarget) Dependencies() []string
- func (i ImageTarget) DependencyIDs() []TargetID
- func (i ImageTarget) DockerBuildInfo() DockerBuild
- func (i ImageTarget) Dockerignores() []Dockerignore
- func (i ImageTarget) HasDistinctClusterRef() bool
- func (i ImageTarget) ID() TargetID
- func (i ImageTarget) IgnoredLocalDirectories() []string
- func (i ImageTarget) IsCustomBuild() bool
- func (i ImageTarget) IsDockerBuild() bool
- func (i ImageTarget) LiveUpdateInfo() LiveUpdate
- func (i ImageTarget) LocalPaths() []string
- func (i ImageTarget) LocalRepos() []LocalGitRepo
- func (i ImageTarget) MaybeIgnoreRegistry() ImageTarget
- func (i ImageTarget) MustWithRef(ref container.RefSelector) ImageTarget
- func (i ImageTarget) TiltFilename() string
- func (i ImageTarget) Validate() error
- func (i ImageTarget) WithBuildDetails(details BuildDetails) ImageTarget
- func (i ImageTarget) WithDependencyIDs(ids []TargetID) ImageTarget
- func (i ImageTarget) WithDockerignores(dockerignores []Dockerignore) ImageTarget
- func (i ImageTarget) WithOverrideCommand(cmd Cmd) ImageTarget
- func (i ImageTarget) WithRepos(repos []LocalGitRepo) ImageTarget
- func (i ImageTarget) WithTiltFilename(f string) ImageTarget
- type K8sTarget
- func (k8s K8sTarget) DependencyIDs() []TargetID
- func (k8s K8sTarget) Empty() bool
- func (k8s K8sTarget) HasJob() bool
- func (k8s K8sTarget) ID() TargetID
- func (k8s K8sTarget) RefInjectCounts() map[string]int
- func (k8s K8sTarget) Validate() error
- func (k8s K8sTarget) WithDependencyIDs(ids []TargetID) K8sTarget
- func (k8s K8sTarget) WithRefInjectCounts(ric map[string]int) K8sTarget
- type LabelPair
- type Link
- type LiveUpdate
- type LiveUpdateFallBackOnStep
- type LiveUpdateRestartContainerStep
- type LiveUpdateRunStep
- type LiveUpdateStep
- type LiveUpdateSyncStep
- type LocalGitRepo
- type LocalTarget
- func (lt LocalTarget) Dependencies() []string
- func (lt LocalTarget) DependencyIDs() []TargetID
- func (lt LocalTarget) Dockerignores() []Dockerignore
- func (lt LocalTarget) Empty() bool
- func (lt LocalTarget) ID() TargetID
- func (lt LocalTarget) IgnoredLocalDirectories() []string
- func (lt LocalTarget) LocalRepos() []LocalGitRepo
- func (lt LocalTarget) UpdateCmdName() string
- func (lt LocalTarget) Validate() error
- func (lt LocalTarget) WithAllowParallel(val bool) LocalTarget
- func (lt LocalTarget) WithIgnores(ignores []Dockerignore) LocalTarget
- func (lt LocalTarget) WithIsTest(isTest bool) LocalTarget
- func (lt LocalTarget) WithLinks(links []Link) LocalTarget
- func (lt LocalTarget) WithReadinessProbe(probeSpec *v1alpha1.Probe) LocalTarget
- func (lt LocalTarget) WithRepos(repos []LocalGitRepo) LocalTarget
- func (lt LocalTarget) WithTags(tags []string) LocalTarget
- type LogSpanID
- type Manifest
- func (m Manifest) DependencyIDs() []TargetID
- func (m Manifest) DockerComposeTarget() DockerComposeTarget
- func (m Manifest) ID() TargetID
- func (m Manifest) ImageTargetAt(i int) ImageTarget
- func (m Manifest) ImageTargetWithID(id TargetID) ImageTarget
- func (m Manifest) IsDC() bool
- func (m Manifest) IsImageDeployed(iTarget ImageTarget) bool
- func (m Manifest) IsK8s() bool
- func (m Manifest) IsLocal() bool
- func (m Manifest) K8sTarget() K8sTarget
- func (m Manifest) LocalPaths() []string
- func (m Manifest) LocalTarget() LocalTarget
- func (m Manifest) ManifestName() ManifestName
- func (m Manifest) PodReadinessMode() PodReadinessMode
- func (m Manifest) ReverseDependencyIDs() map[TargetID][]TargetID
- func (m Manifest) TargetIDSet() map[TargetID]bool
- func (m Manifest) TargetSpecs() []TargetSpec
- func (m Manifest) Validate() error
- func (m Manifest) WithDeployTarget(t TargetSpec) Manifest
- func (m Manifest) WithImageTarget(iTarget ImageTarget) Manifest
- func (m Manifest) WithImageTargets(iTargets []ImageTarget) Manifest
- func (m Manifest) WithTriggerMode(mode TriggerMode) Manifest
- type ManifestName
- type ManifestNameSet
- type ManifestSource
- type MetricsMode
- type MetricsSettings
- type Orchestrator
- type PathMatcher
- type PathSet
- type PodReadinessMode
- type PortForward
- type Run
- type Secret
- type SecretSet
- type SecretSettings
- type Sync
- type Target
- type TargetGraph
- func (g TargetGraph) DeployedImages() []ImageTarget
- func (g TargetGraph) DepsOf(t TargetSpec) ([]TargetSpec, error)
- func (g TargetGraph) Images() []ImageTarget
- func (g TargetGraph) IsDeployedImage(iTarget ImageTarget) bool
- func (g TargetGraph) IsSingleSourceDAG() bool
- func (g TargetGraph) VisitTree(root TargetSpec, visit func(dep TargetSpec) error) error
- type TargetID
- type TargetName
- type TargetSpec
- type TargetStatus
- type TargetType
- type TelemetrySettings
- type TelemetryStatus
- type TiltBuild
- type TiltSubcommand
- type TriggerMode
- type UpdateSettings
- type UserConfigState
- type VersionSettings
- type WatchSettings
- type WebDevPort
- type WebHost
- type WebMode
- type WebPort
- type WebSHA
- type WebURL
- type WebVersion
Constants ¶
const BuildHistoryLimit = 2
const BuildReasonNone = BuildReason(0)
const (
DefaultMaxParallelUpdates = 3
)
const DefaultTelemetryPeriod = 60 * time.Second
const DefaultWebPort = 10350
const DockerPruneDefaultInterval = time.Hour
How often to prune Docker images while Tilt is running
const DockerPruneDefaultKeepRecent = 2
Keep the last 2 builds of an image
const DockerPruneDefaultMaxAge = time.Hour * 6
Prune Docker objects older than this
const ManifestSourceMetrics = ManifestSource("metrics")
const ManifestSourceTiltfile = ManifestSource("")
const MetricsDefault = MetricsMode("")
const MetricsDisabled = MetricsMode("disabled")
const MetricsLocal = MetricsMode("local")
const MetricsProd = MetricsMode("prod")
const OrchestratorDC = Orchestrator("DockerCompose")
const OrchestratorK8s = Orchestrator("Kubernetes")
const OrchestratorUnknown = Orchestrator("")
const TiltfileManifestName = ManifestName("(Tiltfile)")
const UnresourcedYAMLManifestName = ManifestName("uncategorized")
TODO(maia): throw an error if you try to name a manifest this in your Tiltfile?
Variables ¶
var DefaultReportingPeriod = 5 * time.Minute
var TriggerModes = map[TriggerMode]bool{ TriggerModeAuto: true, TriggerModeManualWithAutoInit: true, TriggerModeManual: true, TriggerModeAutoWithManualInit: true, }
Functions ¶
func ArgListToString ¶ added in v0.21.1
func ChangesInvalidateBuild ¶
ChangesInvalidateBuild checks whether the changes from old => new manifest invalidate our build of the old one; i.e. if we're replacing `old` with `new`, should we perform a full rebuild?
func ImageTargetsByID ¶
func ImageTargetsByID(iTargets []ImageTarget) map[TargetID]ImageTarget
func LinksToURLStrings ¶ added in v0.17.8
func LocalRefSelectorsForManifests ¶ added in v0.14.0
func LocalRefSelectorsForManifests(manifests []Manifest) []container.RefSelector
func MakeTargetMap ¶
func MakeTargetMap(targets []TargetSpec) map[TargetID]TargetSpec
Map all the targets by their target ID.
func NewRelativeFileOrChildMatcher ¶
NewRelativeFileOrChildMatcher returns a matcher for the given paths (with any relative paths converted to absolute, relative to the given baseDir).
func NewSimpleFileMatcher ¶
NewSimpleFileMatcher returns a matcher for the given paths; any relative paths are converted to absolute (relative to cwd).
func TargetIDSet ¶
func ValidTriggerMode ¶ added in v0.18.4
func ValidTriggerMode(tm TriggerMode) bool
func ValidateAPIServerName ¶ added in v0.19.5
func ValidateAPIServerName(name APIServerName) error
Makes sure the apiserver name is well-formed.
Types ¶
type APIServerName ¶ added in v0.19.5
type APIServerName string
If there are multiple tilt apiservers running, we can refer to them by name.
func DefaultAPIServerName ¶ added in v0.19.5
func DefaultAPIServerName(port WebPort) APIServerName
Each apiserver has a name based on the web port.
func ProvideAPIServerName ¶ added in v0.19.5
func ProvideAPIServerName(port WebPort) APIServerName
Determines what the API server name should be based on the --port flag.
TODO(nick): Long-term, most tools in this space are moving away from making users manage ports, and using names to identify different instances.
type BuildDetails ¶
type BuildDetails interface {
// contains filtered or unexported methods
}
type BuildReason ¶
type BuildReason int
const ( BuildReasonFlagChangedFiles BuildReason = 1 << iota BuildReasonFlagConfig // See comments on NeedsRebuildFromCrash BuildReasonFlagCrash BuildReasonFlagInit BuildReasonFlagTriggerWeb BuildReasonFlagTriggerCLI BuildReasonFlagTriggerUnknown // An external process called `tilt args` BuildReasonFlagTiltfileArgs // Suppose you have // manifestA with imageA depending on imageCommon // manifestB with imageB depending on imageCommon // // Building manifestA will mark imageB // with changed dependencies. BuildReasonFlagChangedDeps )
func (BuildReason) Has ¶
func (r BuildReason) Has(flag BuildReason) bool
func (BuildReason) HasTrigger ¶ added in v0.14.0
func (r BuildReason) HasTrigger() bool
func (BuildReason) IsCrashOnly ¶
func (r BuildReason) IsCrashOnly() bool
func (BuildReason) String ¶ added in v0.10.16
func (r BuildReason) String() string
func (BuildReason) With ¶
func (r BuildReason) With(flag BuildReason) BuildReason
type BuildRecord ¶
type BuildRecord struct { Edits []string Error error StartTime time.Time FinishTime time.Time // IsZero() == true for in-progress builds Reason BuildReason BuildTypes []BuildType // The lookup key for the logs in the logstore. SpanID LogSpanID // We count the warnings by looking up all the logs with Level=WARNING // in the logstore. We store this number separately for ease of use. WarningCount int }
func (BuildRecord) Duration ¶
func (bs BuildRecord) Duration() time.Duration
func (BuildRecord) Empty ¶
func (bs BuildRecord) Empty() bool
func (BuildRecord) HasBuildType ¶ added in v0.10.14
func (r BuildRecord) HasBuildType(bt BuildType) bool
type BuildType ¶ added in v0.10.14
type BuildType string
const BuildTypeDockerCompose BuildType = "docker-compose"
const BuildTypeImage BuildType = "image"
const BuildTypeK8s BuildType = "k8s"
const BuildTypeLiveUpdate BuildType = "live-update"
const BuildTypeLocal BuildType = "local"
type ByURL ¶ added in v0.17.7
type ByURL []Link
ByURL implements sort.Interface based on the URL field.
type Cmd ¶
func ToBatCmd ¶ added in v0.14.0
🦇🦇🦇 Named in honor of Bazel https://docs.bazel.build/versions/master/be/general.html#genrule.cmd_bat
func ToHostCmdInDir ¶ added in v0.18.1
func ToHostCmdInDirWithEnv ¶ added in v0.18.5
func ToUnixCmdInDir ¶ added in v0.18.1
func ToUnixCmds ¶ added in v0.14.0
func (Cmd) EntrypointStr ¶
func (Cmd) IsShellStandardForm ¶
func (Cmd) IsWindowsStandardForm ¶ added in v0.14.0
func (Cmd) ShellStandardScript ¶
Get the script when the shell is in standard form. Panics if the command is not in shell standard form.
type CompositePathMatcher ¶
type CompositePathMatcher struct {
Matchers []PathMatcher
}
func (CompositePathMatcher) MatchesEntireDir ¶
func (c CompositePathMatcher) MatchesEntireDir(f string) (bool, error)
type CustomBuild ¶
type CustomBuild struct { WorkDir string Command Cmd // Deps is a list of file paths that are dependencies of this command. Deps []string // Optional: tag we expect the image to be built with (we use this to check that // the expected image+tag has been created). // If empty, we create an expected tag at the beginning of CustomBuild (and // export $EXPECTED_REF=name:expected_tag ) Tag string LiveUpdate LiveUpdate // Optionally, can use LiveUpdate to update this build in place. DisablePush bool SkipsLocalDocker bool // We expect the custom build script to print the image ref to this file, // so that Tilt can read it out when we're done. OutputsImageRefTo string }
func (CustomBuild) SkipsPush ¶ added in v0.10.22
func (cb CustomBuild) SkipsPush() bool
func (CustomBuild) WithTag ¶
func (cb CustomBuild) WithTag(t string) CustomBuild
type DockerBuild ¶
type DockerBuild struct { Dockerfile string BuildPath string // the absolute path to the files BuildArgs DockerBuildArgs LiveUpdate LiveUpdate // Optionally, can use LiveUpdate to update this build in place. TargetStage DockerBuildTarget // Pass SSH secrets to docker so it can clone private repos. // https://docs.docker.com/develop/develop-images/build_enhancements/#using-ssh-to-access-private-data-in-builds SSHSpecs []string // Pass secrets to docker // https://docs.docker.com/develop/develop-images/build_enhancements/#new-docker-build-secret-information SecretSpecs []string Network string PullParent bool CacheFrom []string // By default, Tilt creates a new temporary image reference for each build. // The user can also specify their own reference, to integrate with other tooling // (like build IDs for Jenkins build pipelines) // // Equivalent to the docker build --tag flag. // Named 'tag' for consistency with how it's used throughout the docker API, // even though this is really more like a reference.NamedTagged ExtraTags []string }
type DockerBuildArgs ¶
type DockerBuildTarget ¶ added in v0.10.8
type DockerBuildTarget string
func (DockerBuildTarget) String ¶ added in v0.10.8
func (s DockerBuildTarget) String() string
type DockerComposeTarget ¶
type DockerComposeTarget struct { Name TargetName ConfigPaths []string YAMLRaw []byte // for diff'ing when config files change DfRaw []byte // for diff'ing when config files change Links []Link // contains filtered or unexported fields }
func ExtractDockerComposeTargets ¶
func ExtractDockerComposeTargets(specs []TargetSpec) []DockerComposeTarget
func (DockerComposeTarget) Dependencies ¶
func (t DockerComposeTarget) Dependencies() []string
TODO(nick): This method should be deleted. We should just de-dupe and sort LocalPaths once when we create it, rather than have a duplicate method that does the "right" thing.
func (DockerComposeTarget) DependencyIDs ¶
func (t DockerComposeTarget) DependencyIDs() []TargetID
func (DockerComposeTarget) Dockerignores ¶
func (t DockerComposeTarget) Dockerignores() []Dockerignore
func (DockerComposeTarget) Empty ¶
func (t DockerComposeTarget) Empty() bool
func (DockerComposeTarget) ID ¶
func (t DockerComposeTarget) ID() TargetID
func (DockerComposeTarget) IgnoredLocalDirectories ¶
func (t DockerComposeTarget) IgnoredLocalDirectories() []string
func (DockerComposeTarget) LocalPaths ¶
func (t DockerComposeTarget) LocalPaths() []string
func (DockerComposeTarget) LocalRepos ¶
func (t DockerComposeTarget) LocalRepos() []LocalGitRepo
func (DockerComposeTarget) ManifestName ¶
func (t DockerComposeTarget) ManifestName() ManifestName
TODO(nick): This is a temporary hack until we figure out how we want to pass these IDs to the docker-compose UX.
func (DockerComposeTarget) PublishedPorts ¶
func (t DockerComposeTarget) PublishedPorts() []int
func (DockerComposeTarget) TiltFilename ¶
func (t DockerComposeTarget) TiltFilename() string
func (DockerComposeTarget) Validate ¶
func (dc DockerComposeTarget) Validate() error
func (DockerComposeTarget) WithBuildPath ¶
func (t DockerComposeTarget) WithBuildPath(buildPath string) DockerComposeTarget
func (DockerComposeTarget) WithDependencyIDs ¶
func (t DockerComposeTarget) WithDependencyIDs(ids []TargetID) DockerComposeTarget
func (DockerComposeTarget) WithDockerignores ¶
func (t DockerComposeTarget) WithDockerignores(dockerignores []Dockerignore) DockerComposeTarget
func (DockerComposeTarget) WithIgnoredLocalDirectories ¶
func (t DockerComposeTarget) WithIgnoredLocalDirectories(dirs []string) DockerComposeTarget
func (DockerComposeTarget) WithLinks ¶ added in v0.18.9
func (t DockerComposeTarget) WithLinks(links []Link) DockerComposeTarget
func (DockerComposeTarget) WithPublishedPorts ¶
func (t DockerComposeTarget) WithPublishedPorts(ports []int) DockerComposeTarget
func (DockerComposeTarget) WithRepos ¶
func (t DockerComposeTarget) WithRepos(repos []LocalGitRepo) DockerComposeTarget
func (DockerComposeTarget) WithTiltFilename ¶
func (t DockerComposeTarget) WithTiltFilename(f string) DockerComposeTarget
type DockerPruneSettings ¶ added in v0.10.14
type DockerPruneSettings struct { Enabled bool MaxAge time.Duration // "prune Docker objects older than X" NumBuilds int // "prune every Y builds" (takes precedence over "prune every Z hours") Interval time.Duration // "prune every Z hours" KeepRecent int // Keep the most recent N builds of a tag. }
func DefaultDockerPruneSettings ¶ added in v0.10.14
func DefaultDockerPruneSettings() DockerPruneSettings
type Dockerignore ¶
type Dockerignore struct { // The path to evaluate the dockerignore contents relative to LocalPath string // A human-readable string that identifies where the ignores come from. Source string // Patterns parsed out of the .dockerignore file. Patterns []string }
func (Dockerignore) Empty ¶ added in v0.17.6
func (d Dockerignore) Empty() bool
type ImageTarget ¶
type ImageTarget struct { // An apiserver-driven data model for injecting the image into other resources. v1alpha1.ImageMapSpec Refs container.RefSet BuildDetails BuildDetails // contains filtered or unexported fields }
func ExtractImageTargets ¶
func ExtractImageTargets(specs []TargetSpec) []ImageTarget
func MustNewImageTarget ¶ added in v0.14.0
func MustNewImageTarget(ref container.RefSelector) ImageTarget
func (ImageTarget) CustomBuildInfo ¶
func (i ImageTarget) CustomBuildInfo() CustomBuild
func (ImageTarget) Dependencies ¶
func (i ImageTarget) Dependencies() []string
TODO(nick): This method should be deleted. We should just de-dupe and sort LocalPaths once when we create it, rather than have a duplicate method that does the "right" thing.
func (ImageTarget) DependencyIDs ¶
func (i ImageTarget) DependencyIDs() []TargetID
func (ImageTarget) DockerBuildInfo ¶
func (i ImageTarget) DockerBuildInfo() DockerBuild
func (ImageTarget) Dockerignores ¶
func (i ImageTarget) Dockerignores() []Dockerignore
func (ImageTarget) HasDistinctClusterRef ¶ added in v0.14.0
func (i ImageTarget) HasDistinctClusterRef() bool
HasDistinctClusterRef indicates whether the image target has a ClusterRef distinct from LocalRef, i.e. if the image is addressed different from inside and outside the cluster.
func (ImageTarget) ID ¶
func (i ImageTarget) ID() TargetID
func (ImageTarget) IgnoredLocalDirectories ¶
func (i ImageTarget) IgnoredLocalDirectories() []string
func (ImageTarget) IsCustomBuild ¶
func (i ImageTarget) IsCustomBuild() bool
func (ImageTarget) IsDockerBuild ¶
func (i ImageTarget) IsDockerBuild() bool
func (ImageTarget) LiveUpdateInfo ¶ added in v0.10.24
func (i ImageTarget) LiveUpdateInfo() LiveUpdate
func (ImageTarget) LocalPaths ¶
func (i ImageTarget) LocalPaths() []string
func (ImageTarget) LocalRepos ¶
func (i ImageTarget) LocalRepos() []LocalGitRepo
func (ImageTarget) MaybeIgnoreRegistry ¶ added in v0.17.4
func (i ImageTarget) MaybeIgnoreRegistry() ImageTarget
I (Nick) am deeply unhappy with the parameters of CustomBuild. They're not well-specified, and often interact in weird and unpredictable ways. This function is a good example.
custom_build(tag) means "My custom_build script already has a tag that it wants to use". In practice, it becomes the "You can't tell me what to do" flag.
custom_build(skips_local_docker) means "My custom_build script doesn't use Docker for storage, so you shouldn't expect to find the image there." In practice, it becomes the "You can't touch my outputs" flag.
When used together, you have a script that takes no inputs and doesn't let Tilt fix the outputs. So people use custom_build(tag=x, skips_local_docker=True) to enable all sorts of off-road experimental image-building flows that need better primitives.
For now, when we detect this case, we strip off registry information, since the script isn't going to use it anyway. This is tightly coupled with CustomBuilder, which already has similar logic for handling these two cases together.
func (ImageTarget) MustWithRef ¶ added in v0.20.8
func (i ImageTarget) MustWithRef(ref container.RefSelector) ImageTarget
func (ImageTarget) TiltFilename ¶
func (i ImageTarget) TiltFilename() string
func (ImageTarget) Validate ¶
func (i ImageTarget) Validate() error
func (ImageTarget) WithBuildDetails ¶
func (i ImageTarget) WithBuildDetails(details BuildDetails) ImageTarget
func (ImageTarget) WithDependencyIDs ¶
func (i ImageTarget) WithDependencyIDs(ids []TargetID) ImageTarget
func (ImageTarget) WithDockerignores ¶
func (i ImageTarget) WithDockerignores(dockerignores []Dockerignore) ImageTarget
func (ImageTarget) WithOverrideCommand ¶
func (i ImageTarget) WithOverrideCommand(cmd Cmd) ImageTarget
func (ImageTarget) WithRepos ¶
func (i ImageTarget) WithRepos(repos []LocalGitRepo) ImageTarget
func (ImageTarget) WithTiltFilename ¶
func (i ImageTarget) WithTiltFilename(f string) ImageTarget
type K8sTarget ¶
type K8sTarget struct { // An apiserver-driven data model for applying Kubernetes YAML. // // This will eventually replace K8sTarget. We represent this as an embedded // struct while we're migrating fields. v1alpha1.KubernetesApplySpec Name TargetName PortForwards []PortForward // labels for pods that we should watch and associate with this resource ExtraPodSelectors []labels.Set // Each K8s entity should have a display name for user interfaces // that balances brevity and uniqueness DisplayNames []string // Store the name, namespace, and type in a structured form // for easy access. This should duplicate what's specified in the YAML. ObjectRefs []v1.ObjectReference PodReadinessMode PodReadinessMode // zero+ links assoc'd with this resource (to be displayed in UIs, // in addition to any port forwards/LB endpoints) Links []Link // contains filtered or unexported fields }
func ExtractK8sTargets ¶
func ExtractK8sTargets(specs []TargetSpec) []K8sTarget
func NewK8sTargetForTesting ¶ added in v0.20.8
func (K8sTarget) DependencyIDs ¶
func (K8sTarget) RefInjectCounts ¶
func (K8sTarget) WithDependencyIDs ¶
type LabelPair ¶
func ToLabelPairs ¶
type Link ¶ added in v0.17.7
type Link struct { URL *url.URL // Optional name of the link; if given, used as text of the URL // displayed in the web UI (e.g. <a href="localhost:8888">Debugger</a>) Name string }
A link associated with resource; may represent a port forward, an endpoint derived from a Service/Ingress/etc., or a URL manually associated with a resource via the Tiltfile
func MustNewLink ¶ added in v0.17.8
type LiveUpdate ¶
type LiveUpdate struct { Steps []LiveUpdateStep BaseDir string // directory where the LiveUpdate was initialized (we'll use this to eval. any relative paths) }
Specifies how to update a running container.
- If any paths specified in a FallBackOn step have changed, fall back to an image build (i.e. don't do a LiveUpdate)
- If there are Sync steps in `Steps`, files will be synced as specified.
- Any time we sync one or more files, all Run and RestartContainer steps will be evaluated.
func NewLiveUpdate ¶
func NewLiveUpdate(steps []LiveUpdateStep, baseDir string) (LiveUpdate, error)
func (LiveUpdate) Empty ¶
func (lu LiveUpdate) Empty() bool
func (LiveUpdate) FallBackOnFiles ¶
func (lu LiveUpdate) FallBackOnFiles() PathSet
FallBackOnFiles returns a PathSet of files which, if any have changed, indicate that we should fall back to an image build.
func (LiveUpdate) RunSteps ¶
func (lu LiveUpdate) RunSteps() []Run
func (LiveUpdate) ShouldRestart ¶
func (lu LiveUpdate) ShouldRestart() bool
func (LiveUpdate) SyncSteps ¶
func (lu LiveUpdate) SyncSteps() []Sync
type LiveUpdateFallBackOnStep ¶
type LiveUpdateFallBackOnStep struct {
Files []string
}
Specifies that changes to any of the given files should cause the builder to fall back (i.e. do a full image build)
type LiveUpdateRestartContainerStep ¶
type LiveUpdateRestartContainerStep struct{}
Specifies that the container should be restarted when any files in `Sync` steps have changed.
type LiveUpdateRunStep ¶
Specifies that `Command` should be executed when any files in `Sync` steps have changed If `Trigger` is non-empty, `Command` will only be executed when the local paths of changed files covered by at least one `Sync` match one of `PathSet.Paths` (evaluated relative to `PathSet.BaseDirectory`.
type LiveUpdateStep ¶
type LiveUpdateStep interface {
// contains filtered or unexported methods
}
type LiveUpdateSyncStep ¶
type LiveUpdateSyncStep struct {
Source, Dest string
}
Specifies that changes to local path `Source` should be synced to container path `Dest`
type LocalGitRepo ¶
type LocalGitRepo struct {
LocalPath string
}
func (LocalGitRepo) IsRepo ¶
func (LocalGitRepo) IsRepo()
type LocalTarget ¶ added in v0.10.8
type LocalTarget struct { UpdateCmdSpec *v1alpha1.CmdSpec Name TargetName ServeCmd Cmd // e.g. `python main.py` Links []Link // zero+ links assoc'd with this resource (to be displayed in UIs) Deps []string // a list of ABSOLUTE file paths that are dependencies of this target // Indicates that we should allow this to run in parallel with other // resources (by default, this is presumed unsafe and is not allowed). AllowParallel bool // For testing MVP Tags []string // eventually we might want tags to be more widespread -- stored on manifest maybe? IsTest bool // does this target represent a Test? ReadinessProbe *v1alpha1.Probe // contains filtered or unexported fields }
func NewLocalTarget ¶ added in v0.10.8
func NewLocalTarget(name TargetName, updateCmd Cmd, serveCmd Cmd, deps []string) LocalTarget
func (LocalTarget) Dependencies ¶ added in v0.10.8
func (lt LocalTarget) Dependencies() []string
Implements: engine.WatchableManifest
func (LocalTarget) DependencyIDs ¶ added in v0.10.8
func (lt LocalTarget) DependencyIDs() []TargetID
func (LocalTarget) Dockerignores ¶ added in v0.10.8
func (lt LocalTarget) Dockerignores() []Dockerignore
func (LocalTarget) Empty ¶ added in v0.10.9
func (lt LocalTarget) Empty() bool
func (LocalTarget) ID ¶ added in v0.10.8
func (lt LocalTarget) ID() TargetID
func (LocalTarget) IgnoredLocalDirectories ¶ added in v0.10.8
func (lt LocalTarget) IgnoredLocalDirectories() []string
func (LocalTarget) LocalRepos ¶ added in v0.10.8
func (lt LocalTarget) LocalRepos() []LocalGitRepo
func (LocalTarget) UpdateCmdName ¶ added in v0.21.1
func (lt LocalTarget) UpdateCmdName() string
func (LocalTarget) Validate ¶ added in v0.10.8
func (lt LocalTarget) Validate() error
func (LocalTarget) WithAllowParallel ¶ added in v0.17.2
func (lt LocalTarget) WithAllowParallel(val bool) LocalTarget
func (LocalTarget) WithIgnores ¶ added in v0.10.16
func (lt LocalTarget) WithIgnores(ignores []Dockerignore) LocalTarget
func (LocalTarget) WithIsTest ¶ added in v0.18.3
func (lt LocalTarget) WithIsTest(isTest bool) LocalTarget
func (LocalTarget) WithLinks ¶ added in v0.17.8
func (lt LocalTarget) WithLinks(links []Link) LocalTarget
func (LocalTarget) WithReadinessProbe ¶ added in v0.18.6
func (lt LocalTarget) WithReadinessProbe(probeSpec *v1alpha1.Probe) LocalTarget
func (LocalTarget) WithRepos ¶ added in v0.10.8
func (lt LocalTarget) WithRepos(repos []LocalGitRepo) LocalTarget
func (LocalTarget) WithTags ¶ added in v0.18.3
func (lt LocalTarget) WithTags(tags []string) LocalTarget
type Manifest ¶
type Manifest struct { // Properties for all manifests. Name ManifestName // Info needed to build an image. (This struct contains details of DockerBuild, CustomBuild... etc.) ImageTargets []ImageTarget // Info needed to deploy. Can be k8s yaml, docker compose, etc. DeployTarget TargetSpec // How updates are triggered: // - automatically, when we detect a change // - manually, only when the user tells us to TriggerMode TriggerMode // The resource in this manifest will not be built until all of its dependencies have been // ready at least once. ResourceDependencies []ManifestName Source ManifestSource }
NOTE: If you modify Manifest, make sure to modify `Manifest.Equal` appropriately
func (Manifest) DependencyIDs ¶
func (Manifest) DockerComposeTarget ¶
func (m Manifest) DockerComposeTarget() DockerComposeTarget
func (Manifest) ImageTargetAt ¶
func (m Manifest) ImageTargetAt(i int) ImageTarget
func (Manifest) ImageTargetWithID ¶ added in v0.17.5
func (m Manifest) ImageTargetWithID(id TargetID) ImageTarget
func (Manifest) IsImageDeployed ¶
func (m Manifest) IsImageDeployed(iTarget ImageTarget) bool
func (Manifest) LocalPaths ¶
func (Manifest) LocalTarget ¶ added in v0.10.8
func (m Manifest) LocalTarget() LocalTarget
func (Manifest) ManifestName ¶
func (m Manifest) ManifestName() ManifestName
func (Manifest) PodReadinessMode ¶ added in v0.17.0
func (m Manifest) PodReadinessMode() PodReadinessMode
func (Manifest) ReverseDependencyIDs ¶ added in v0.16.0
A map from each target id to the target IDs that depend on it.
func (Manifest) TargetIDSet ¶ added in v0.15.0
func (Manifest) TargetSpecs ¶
func (m Manifest) TargetSpecs() []TargetSpec
func (Manifest) WithDeployTarget ¶
func (m Manifest) WithDeployTarget(t TargetSpec) Manifest
func (Manifest) WithImageTarget ¶
func (m Manifest) WithImageTarget(iTarget ImageTarget) Manifest
func (Manifest) WithImageTargets ¶
func (m Manifest) WithImageTargets(iTargets []ImageTarget) Manifest
func (Manifest) WithTriggerMode ¶
func (m Manifest) WithTriggerMode(mode TriggerMode) Manifest
type ManifestName ¶
type ManifestName string
TODO(nick): We should probably get rid of ManifestName completely and just use TargetName everywhere.
func ManifestNames ¶ added in v0.18.4
func ManifestNames(names []string) []ManifestName
func (ManifestName) String ¶
func (m ManifestName) String() string
func (ManifestName) TargetName ¶
func (m ManifestName) TargetName() TargetName
type ManifestNameSet ¶ added in v0.17.1
type ManifestNameSet map[ManifestName]bool
type ManifestSource ¶ added in v0.17.13
type ManifestSource string
type MetricsSettings ¶ added in v0.17.4
type MetricsSettings struct { Enabled bool Address string Insecure bool // How often Tilt reports its metrics. Useful for testing. // https://pkg.go.dev/go.opencensus.io/stats/view?tab=doc#SetReportingPeriod ReportingPeriod time.Duration // Whether anonymous metrics are allowed. // The normal tilt prod metrics processor requires the // user to be logged in. AllowAnonymous bool }
Metrics settings generally map to exporter options https://pkg.go.dev/contrib.go.opencensus.io/exporter/ocagent?tab=doc#ExporterOption
func DefaultMetricsSettings ¶ added in v0.17.4
func DefaultMetricsSettings() MetricsSettings
type Orchestrator ¶
type Orchestrator string
The current orchestrator we're running with (K8s or DockerCompose)
type PathMatcher ¶
type PathMatcher interface { Matches(f string) (bool, error) // If this matches the entire dir, we can often optimize filetree walks a bit MatchesEntireDir(file string) (bool, error) }
var EmptyMatcher PathMatcher = emptyMatcher{}
func NewCompositeMatcher ¶
func NewCompositeMatcher(matchers []PathMatcher) PathMatcher
type PathSet ¶
A PathSet stores one or more filepaths, along with the directory that any relative paths are relative to NOTE(maia): in its current usage (for LiveUpdate.Run.Triggers, LiveUpdate.FallBackOnFiles()) this isn't strictly necessary, could just as easily convert paths to Abs when specified in the Tiltfile--but leaving this code in place for now because it was already written and may help with complicated future cases (glob support, etc.)
func NewPathSet ¶
type PodReadinessMode ¶ added in v0.17.0
type PodReadinessMode string
Whether or not to wait for pods to become ready before marking the k8s resource healthy.
TODO(nick): I strongly suspect we will at least want a separate mode for jobs that waits until they become complete, as we do in `tilt ci`
const PodReadinessIgnore PodReadinessMode = "ignore"
Don't even wait for pods to appear.
const PodReadinessNone PodReadinessMode = ""
Pod readiness isn't applicable to this resource
const PodReadinessWait PodReadinessMode = "wait"
Always wait for pods to become ready.
type PortForward ¶
type PortForward struct { // The port to connect to inside the deployed container. // If 0, we will connect to the first containerPort. ContainerPort int // The port to expose on the current machine. LocalPort int // Optional host to bind to on the current machine (localhost by default) Host string // Optional name of the port forward; if given, used as text of the URL // displayed in the web UI (e.g. <a href="localhost:8888">Debugger</a>) Name string // contains filtered or unexported fields }
func MustPortForward ¶ added in v0.17.9
func (PortForward) PathForAppend ¶ added in v0.17.9
func (pf PortForward) PathForAppend() string
func (PortForward) ToLink ¶ added in v0.17.7
func (pf PortForward) ToLink() Link
func (PortForward) WithPath ¶ added in v0.17.9
func (pf PortForward) WithPath(p *url.URL) PortForward
type Run ¶
type Secret ¶ added in v0.10.10
type SecretSet ¶ added in v0.10.10
Secrets are different than other kinds of build/deploy outputs.
Once something is marked as a secret, we want to scrub it from all logs until the user quits Tilt. Removing the secret from the Kubernetes cluster doesn't suddenly "reveal" the secret.
type SecretSettings ¶ added in v0.14.0
type SecretSettings struct {
ScrubSecrets bool // whether to scrub secrets in logs
}
func DefaultSecretSettings ¶ added in v0.14.0
func DefaultSecretSettings() SecretSettings
type Target ¶
type Target interface { Spec() TargetSpec Status() TargetStatus }
type TargetGraph ¶
type TargetGraph struct {
// contains filtered or unexported fields
}
func NewTargetGraph ¶
func NewTargetGraph(targets []TargetSpec) (TargetGraph, error)
func (TargetGraph) DeployedImages ¶
func (g TargetGraph) DeployedImages() []ImageTarget
Returns all the images in the graph that are directly deployed to a container.
func (TargetGraph) DepsOf ¶
func (g TargetGraph) DepsOf(t TargetSpec) ([]TargetSpec, error)
Return the direct dependency targets.
func (TargetGraph) Images ¶
func (g TargetGraph) Images() []ImageTarget
func (TargetGraph) IsDeployedImage ¶
func (g TargetGraph) IsDeployedImage(iTarget ImageTarget) bool
Is this image directly deployed a container?
func (TargetGraph) IsSingleSourceDAG ¶
func (g TargetGraph) IsSingleSourceDAG() bool
In Tilt, Manifests should always be DAGs with a single root node (the deploy target). This is just a quick sanity check to make sure that's true, because many of our graph-traversal algorithms won't work if it's not true.
func (TargetGraph) VisitTree ¶
func (g TargetGraph) VisitTree(root TargetSpec, visit func(dep TargetSpec) error) error
Visit t and its transitive dependencies in post-order (aka depth-first)
type TargetID ¶
type TargetID struct { Type TargetType Name TargetName }
func DedupeTargetIDs ¶
De-duplicate target ids, maintaining the same order.
func ImageID ¶
func ImageID(ref container.RefSelector) TargetID
type TargetName ¶
type TargetName string
func (TargetName) String ¶
func (n TargetName) String() string
type TargetSpec ¶
type TargetSpec interface { ID() TargetID // Check to make sure the spec is well-formed. // All TargetSpecs should throw an error in the case where the ID is empty. Validate() error DependencyIDs() []TargetID }
func TopologicalSort ¶
func TopologicalSort(targets []TargetSpec) ([]TargetSpec, error)
Create a topologically sorted list of targets. Returns an error if the targets can't be topologically sorted. (e.g., there's a cycle).
type TargetStatus ¶
type TargetStatus interface { TargetID() TargetID ActiveBuild() BuildRecord LastBuild() BuildRecord }
type TargetType ¶
type TargetType string
const ( // Deployed k8s entities TargetTypeK8s TargetType = "k8s" // Image builds TargetTypeImage TargetType = "image" // Docker-compose service build and deploy // TODO(nick): Currently, build and deploy are represented as a single target. // In the future, we might have a separate build target and deploy target. TargetTypeDockerCompose TargetType = "docker-compose" // Runs a local command when triggered (manually or via changed dep) TargetTypeLocal TargetType = "local" // Aggregation of multiple targets into one UI view. // TODO(nick): Currently used as the type for both Manifest and YAMLManifest, though // we expect YAMLManifest to go away. TargetTypeManifest TargetType = "manifest" // Changes that affect all targets, rebuilding the target graph. TargetTypeConfigs TargetType = "configs" )
type TelemetrySettings ¶ added in v0.10.25
type TelemetryStatus ¶ added in v0.10.25
type TiltBuild ¶
type TiltBuild struct { // Version w/o leading "v" Version string CommitSHA string Date string Dev bool }
Information on a build of the Tilt binary
func (TiltBuild) AnalyticsVersion ¶
func (TiltBuild) HumanBuildStamp ¶ added in v0.15.0
func (TiltBuild) WebVersion ¶
func (b TiltBuild) WebVersion() WebVersion
type TiltSubcommand ¶ added in v0.16.0
type TiltSubcommand string
e.g., "up", "down", "ci"
func (TiltSubcommand) String ¶ added in v0.16.0
func (t TiltSubcommand) String() string
type TriggerMode ¶
type TriggerMode int
const ( // Tilt automatically performs all builds (initial and non-initial) without manual intervention TriggerModeAuto TriggerMode = iota // Tilt automatically performs initial builds without manual intervention, but requires manual intervention for non-initial builds TriggerModeManualWithAutoInit TriggerMode = iota // Tilt requires manual intervention for all builds, and never automatically performs a build TriggerModeManual TriggerMode = iota // Resource does not automatically build on `tilt up`, but builds automatically in response to file changes TriggerModeAutoWithManualInit TriggerMode = iota )
When Tilt decides that a resource could use a build, TriggerMode specifies whether to require manual approval before that build takes place. There are two classes of build as far as TriggerMode is concerned:
- Initial - A manifest's first build per `tilt up`. Either directly because the user ran `tilt up`, or because the user just added the manifest to the Tiltfile.
- Non-initial - After the initial build, any time one of the manifest's dependencies changes, the manifest is ready for an update
NOTE(maia): These are probably better stored as two different bools (OnFileChange and OnInit
or similar)--but that's a refactor for another day
func (TriggerMode) AutoInitial ¶ added in v0.10.18
func (t TriggerMode) AutoInitial() bool
func (TriggerMode) AutoOnChange ¶ added in v0.10.18
func (t TriggerMode) AutoOnChange() bool
type UpdateSettings ¶ added in v0.14.0
type UpdateSettings struct {
// contains filtered or unexported fields
}
func DefaultUpdateSettings ¶ added in v0.14.0
func DefaultUpdateSettings() UpdateSettings
func (UpdateSettings) K8sUpsertTimeout ¶ added in v0.14.0
func (us UpdateSettings) K8sUpsertTimeout() time.Duration
func (UpdateSettings) MaxParallelUpdates ¶ added in v0.14.0
func (us UpdateSettings) MaxParallelUpdates() int
func (UpdateSettings) WithK8sUpsertTimeout ¶ added in v0.14.0
func (us UpdateSettings) WithK8sUpsertTimeout(timeout time.Duration) UpdateSettings
func (UpdateSettings) WithMaxParallelUpdates ¶ added in v0.14.0
func (us UpdateSettings) WithMaxParallelUpdates(n int) UpdateSettings
type UserConfigState ¶ added in v0.10.24
func NewUserConfigState ¶ added in v0.10.24
func NewUserConfigState(args []string) UserConfigState
func (UserConfigState) WithArgs ¶ added in v0.10.25
func (ucs UserConfigState) WithArgs(args []string) UserConfigState
type VersionSettings ¶ added in v0.10.19
type VersionSettings struct {
CheckUpdates bool
}
type WatchSettings ¶ added in v0.17.6
type WatchSettings struct {
Ignores []Dockerignore
}
func (WatchSettings) Empty ¶ added in v0.17.6
func (ws WatchSettings) Empty() bool
type WebDevPort ¶
type WebDevPort int
type WebMode ¶
type WebMode string
const ( // By default, we serve the js locally in dev builds and from prod in released // builds. DefaultWebMode WebMode = "default" // Local webpack server LocalWebMode WebMode = "local" // Prod gcloud bucket ProdWebMode WebMode = "prod" // Precompiled with `make build-js`. This is an experimental mode // we're playing around with to avoid the cost of webpack startup. PrecompiledWebMode WebMode = "precompiled" )
type WebSHA ¶ added in v0.10.14
type WebSHA string
Web version of the form aaaaaaa where a is a hex letter Used for fetching web assets
type WebVersion ¶
type WebVersion string
Web version of the form vA.B.C, where A, B, and C are integers Used for fetching web assets
Source Files ¶
- api.go
- build_reason.go
- build_status.go
- cmd.go
- docker_compose_target.go
- docker_prune.go
- extractors.go
- globalyaml.go
- image_target.go
- k8s_target.go
- label_pair.go
- live_update.go
- local_target.go
- logstore.go
- manifest.go
- matcher.go
- metrics.go
- orchestrator.go
- secret.go
- secret_settings.go
- squash.go
- target.go
- target_graph.go
- telemetry_settings.go
- telemetry_state.go
- tilt_build.go
- tilt_subcommand.go
- trigger_mode.go
- update_settings.go
- user_config_state.go
- version_settings.go
- watch_settings.go
- web.go