Run Local and/or Occasional Workflows with Local Resource
(This is a technical doc; see the Local Resource feature announcement blog post for more context on this feature, and an explanation of some circumstances where it might come in handy.)
Each entry in your Tilt sidebar is a resource—a unit of work managed by Tilt. (For context,
the most common type of Tilt resource is one that represents a deployed service, and is made up of
some combination of image build instructions and Kubernetes YAML.) A local resource works
like any other resource in your sidebar; it represents a unit of work, and executes either
automatically in response to file changes, or manually
on signal from the user. For your resource
MyGreatService, when one of its file dependencies
changes, its work is to build a Docker image and deploy some k8s yaml; for a local resource, it’s
to execute an arbitrary command on your local filesystem.
You can define a local resource in your Tiltfile as follows:
local_resource('yarn', cmd='yarn install', deps=['package.json'])
local_resource API spec for more details.
deps argument allows you to specify file dependencies for your local
resource—either as a string (filepath) or a list of strings (list of filepaths).
When Tilt detects a change to any of a resource’s
deps, the resource will execute
(unless the resource is in
TRIGGER_MODE_MANUAL, in which case the resource will not
execute, but you’ll see the “pending changes” indicator next to your resource in the sidebar).
deps is optional. By default, a local resource without
deps runs only once:
tilt up (and any time you change its definition in your
Tiltfile). You can
always manually trigger a local resource (or any resource) with the “force update” button:
You might use this pattern to, for instance, define a local resource that refreshes tokens/credentials
needed by your app—you want to do it once on
tilt up, and every now and then as needed,
but not in response to any particular file changes.
custom_build, you can specify files/directories to be
ignored with the
By default, a local resource will run on startup. To disable this behavior, put the
TRIGGER_MODE_MANUAL and specify
local_resource('reset-db', cmd='reset_db.sh', trigger_mode=TRIGGER_MODE_MANUAL, auto_init=False )
For more on trigger mode, see the docs.
auto_init=False is currently only compatible with
you’d like a local resource that runs automatically in response to file changes
but does NOT run on
tilt up, let us know.