Commands

Below is a list of Garden CLI commands and usage information.

The commands should be run in a Garden project, and are always scoped to that project.

Note: You can get a list of commands in the CLI by running garden -h/--help, and detailed help for each command using garden <command> -h/--help

The Outputs sections show the output structure when running the command with --output yaml. The same structure is used when --output json is used and when querying through the REST API, but in JSON format.

Global options

The following option flags can be used with any of the CLI commands:

Argument
Alias
Type
Description

--root

path

Override project root directory (defaults to working directory). Can be absolute or relative to current directory.

--env

string

The environment (and optionally namespace) to work against.

--force-refresh

boolean

Force refresh of any caches, e.g. cached provider statuses.

--var

array:string

Set a specific variable value, using the format <key>=<value>, e.g. `--var some-key=custom-value`. This will override any value set in your project configuration. You can specify multiple variables by separating with a comma, e.g. `--var key-a=foo,key-b="value with quotes"`.

--yes

boolean

Automatically approve any yes/no prompts during execution, and allow running protected commands against production environments.

--silent

boolean

Suppress log output. Same as setting --logger-type=quiet.

--offline

boolean

Use the --offline option when you can't log in right now. Some features won't be available in offline mode.

--logger-type

quiet default basic json ink

Set logger type. default The default Garden logger, basic: [DEPRECATED] An alias for "default". json: Renders log lines as JSON. quiet: Suppresses all log output, same as --silent.

--log-level

error warn info verbose debug silly 0 1 2 3 4 5

Set logger level. Values can be either string or numeric and are prioritized from 0 to 5 (highest to lowest) as follows: error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5. From the verbose log level onward action execution logs are also printed (e.g. test or run live log outputs).

--output

json yaml

Output command result in the specified format. When used, this option disables line-by-line logging, even if the GARDEN_LOGGER_TYPE environment variable is used.

--emoji

boolean

Enable emoji in output (defaults to true if the environment supports it).

--show-timestamps

boolean

Show timestamps with log output. When enabled, Garden will use the basic logger. I.e., log status changes are rendered as new lines instead of being updated in-place.

--version

boolean

Show the current CLI version.

--help

boolean

Show help

garden build

Perform your Builds.

Runs all or specified Builds, taking into account build dependency order. Optionally stays running and automatically builds when sources (or dependencies' sources) change.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

Specify Builds to run. You may specify multiple names, separated by spaces.

Options

Argument
Alias
Type
Description

--force

boolean

Force re-build.

--with-dependants

boolean

Also rebuild any Builds that depend on one of the Builds specified as CLI arguments (recursively). Note: This option has no effect unless a list of Build names is specified as CLI arguments (since otherwise, every Build in the project will be performed anyway).

Outputs

garden cloud secrets list

List secrets defined in Garden Cloud.

List all secrets from Garden Cloud. Optionally filter on environment, user IDs, or secret names.

Examples: garden cloud secrets list # list all secrets garden cloud secrets list --filter-envs dev # list all secrets from the dev environment garden cloud secrets list --filter-envs dev --filter-names DB # list all secrets from the dev environment that have 'DB' in their name.

Usage

Options

Argument
Alias
Type
Description

--filter-envs

array:string

Filter on environment. You may filter on multiple environments by setting this flag multiple times. Accepts glob patterns."

--filter-user-ids

array:string

Filter on user ID. You may filter on multiple user IDs by setting this flag multiple times. Accepts glob patterns.

--filter-names

array:string

Filter on secret name. You may filter on multiple secret names by setting this flag multiple times. Accepts glob patterns.

garden cloud secrets create

Create secrets in Garden Cloud.

Create secrets in Garden Cloud. You can create project wide secrets or optionally scope them to an environment, or an environment and a user.

To scope secrets to a user, you will need the user's ID which you can get from the garden cloud users list command.

You can optionally read the secrets from a file.

Examples: garden cloud secrets create DB_PASSWORD=my-pwd ACCESS_KEY=my-key # create two secrets garden cloud secrets create ACCESS_KEY=my-key --scope-to-env ci # create a secret and scope it to the ci environment garden cloud secrets create ACCESS_KEY=my-key --scope-to-env ci --scope-to-user 9 # create a secret and scope it to the ci environment and user with ID 9 garden cloud secrets create --from-file /path/to/secrets.txt # create secrets from the key value pairs in the secrets.txt file

Usage

Arguments

Argument
Required
Description

secrets

No

The names and values of the secrets to create, separated by '='. You may specify multiple secret name/value pairs, separated by spaces. Note that you can also leave this empty and have Garden read the secrets from file.

Options

Argument
Alias
Type
Description

--scope-to-user-id

string

Scope the secret to a user with the given ID. User scoped secrets must be scoped to an environment as well.

--scope-to-env

string

Scope the secret to an environment. Note that this does not default to the environment that the command runs in (i.e. the one set via the --env flag) and that you need to set this explicitly if you want to create an environment scoped secret.

--from-file

path

Read the secrets from the file at the given path. The file should have standard "dotenv" format, as defined by dotenv.

garden cloud secrets update

Update secrets in Garden Cloud

Update secrets in Garden Cloud. You can update the secrets by either specifying secret name or secret ID.

By default, the secrets are updated by name instead of secret ID.

When updating by name, only the existing secrets are updated by default. The missing ones are skipped and reported as errors at the end of the command execution. This behavior can be customized with the --upsert flag, so the missing secrets will be created.

If you have multiple secrets with same name across different environments and users, specify the environment and the user id using --scope-to-env and --scope-to-user-id flags. Otherwise, the command will fail with an error.

To update the secrets by their IDs, use the --update-by-id flag. To get the IDs of the secrets you want to update, run the garden cloud secrets list command. The --upsert flag has no effect if it's used along with the --update-by-id flag.

Examples: garden cloud secrets update MY_SECRET=foo MY_SECRET_2=bar # update two secret values with the given names. garden cloud secrets update MY_SECRET=foo MY_SECRET_2=bar --upsert # update two secret values with the given names and create new ones if any are missing garden cloud secrets update MY_SECRET=foo MY_SECRET_2=bar --scope-to-env local --scope-to-user-id # update two secret values with the given names for the environment local and specified user id. garden cloud secrets update <ID 1>=foo <ID 2>=bar --update-by-id # update two secret values with the given IDs.

Usage

Arguments

Argument
Required
Description

secretNamesOrIds

No

The names and values of the secrets to update, separated by '='. You may specify multiple secret name/value pairs, separated by spaces. You can also pass pairs of secret IDs and values if you use `--update-by-id` flag. Note that you can also leave this empty and have Garden read the secrets from file.

Options

Argument
Alias
Type
Description

--upsert

boolean

Set this flag to upsert secrets instead of only updating them. It means that the existing secrets will be updated while the missing secrets will be created. This flag works only while updating secrets by name, and has no effect with `--update-by-id` option.

--update-by-id

boolean

Update secret(s) by secret ID(s). By default, the command args are considered to be secret name(s). The `--upsert` flag has no effect with this option.

--from-file

path

Read the secrets from the file at the given path. The file should have standard "dotenv" format, as defined by dotenv.

--scope-to-user-id

string

Update the secret(s) in scope of user with the given user ID. This must be specified if you want to update secrets by name instead of secret ID.

--scope-to-env

string

Update the secret(s) in scope of the specified environment. This must be specified if you want to update secrets by name instead of secret ID.

garden cloud secrets delete

Delete secrets from Garden Cloud.

Delete secrets in Garden Cloud. You will need the IDs of the secrets you want to delete, which you which you can get from the garden cloud secrets list command.

Examples: garden cloud secrets delete <ID 1> <ID 2> <ID 3> # delete three secrets with the given IDs.

Usage

Arguments

Argument
Required
Description

ids

No

The ID(s) of the secrets to delete.

garden cloud users list

List users defined in Garden Cloud.

List all users from Garden Cloud. Optionally filter on group names or user names.

Examples: garden cloud users list # list all users garden cloud users list --filter-names Gordon* # list all the Gordons in Garden Cloud. Useful if you have a lot of Gordons. garden cloud users list --filter-groups devs-* # list all users in groups that with names that start with 'dev-'

Usage

Options

Argument
Alias
Type
Description

--filter-names

array:string

Filter on user name. You may filter on multiple names by setting this flag multiple times. Accepts glob patterns.

--filter-groups

array:string

Filter on the groups the user belongs to. You may filter on multiple groups by setting this flag multiple times. Accepts glob patterns.

garden cloud users create

Create users in Garden Cloud.

Create users in Garden Cloud and optionally add the users to specific groups. You can get the group IDs from the garden cloud users list command.

To create a user, you'll need their GitHub or GitLab username, depending on which one is your VCS provider, and the name they should have in Garden Cloud. Note that it must the their GitHub/GitLab username, not their email, as people can have several emails tied to their GitHub/GitLab accounts.

You can optionally read the users from a file. The file must have the format vcs-username="Actual Username". For example:

fatema_m="Fatema M" gordon99="Gordon G"

Examples: garden cloud users create fatema_m="Fatema M" gordon99="Gordon G" # create two users garden cloud users create fatema_m="Fatema M" --add-to-groups 1,2 # create a user and add two groups with IDs 1,2 garden cloud users create --from-file /path/to/users.txt # create users from the key value pairs in the users.txt file

Usage

Arguments

Argument
Required
Description

users

No

The VCS usernames and the names of the users to create, separated by '='. You may specify multiple VCS username/name pairs, separated by spaces. Note that you can also leave this empty and have Garden read the users from file.

Options

Argument
Alias
Type
Description

--add-to-groups

array:string

Add the user to the group with the given ID. You may add the user to multiple groups by setting this flag multiple times.

--from-file

path

Read the users from the file at the given path. The file should have standard "dotenv" format (as defined by dotenv) where the VCS username is the key and the name is the value.

garden cloud users delete

Delete users from Garden Cloud.

Delete users in Garden Cloud. You will need the IDs of the users you want to delete, which you which you can get from the garden cloud users list command. Use a comma- separated list to delete multiple users.

Examples: garden cloud users delete <ID 1> <ID 2> <ID 3> # delete three users with the given IDs.

Usage

Arguments

Argument
Required
Description

ids

No

The IDs of the users to delete.

garden cloud groups list

List groups defined in Garden Cloud.

List all groups from Garden Cloud. This is useful for getting the group IDs when creating users via the garden cloud users create command.

Examples: garden cloud groups list # list all groups garden cloud groups list --filter-names dev-* # list all groups that start with 'dev-'

Usage

Options

Argument
Alias
Type
Description

--filter-names

array:string

Filter on group name. You may filter on multiple names by setting this flag multiple times. Accepts glob patterns.

garden community

Join our community Discord to chat with us!

Opens the Garden Community Discord invite link

Usage

garden config analytics-enabled

Update your preferences regarding analytics.

To help us make Garden better, we collect some analytics data about its usage. We make sure all the data collected is anonymized and stripped of sensitive information. We collect data about which commands are run, what tasks they trigger, which API calls are made to your local Garden server, as well as some info about the environment in which Garden runs.

You will be asked if you want to opt out when running Garden for the first time and you can use this command to update your preferences later.

Examples:

Usage

Arguments

Argument
Required
Description

enable

No

Enable analytics. Defaults to "true"

garden create project

Create a new Garden project.

Creates a new Garden project configuration. The generated config includes some default values, as well as the schema of the config in the form of commented-out fields. Also creates a default (blank) .gardenignore file in the same path.

Examples:

Usage

Options

Argument
Alias
Type
Description

--dir

path

Directory to place the project in (defaults to current directory).

--filename

string

Filename to place the project config in (defaults to project.garden.yml).

--interactive

boolean

Set to false to disable interactive prompts.

--name

string

Name of the project (defaults to current directory name).

garden create remote-variables

Create remote variables in Garden Cloud.

Create remote variables in Garden Cloud. Variables belong to variable lists, which you can get via the garden get variable-lists command, and can optionally be scoped to an environment, or an environment and a user. The variable lists themselves are also created in Garden Cloud.

To scope variables to a user, you will need the user's ID which you can get from the garden get users command.

You can optionally read the variables from a .env formatted file using --from-file.

Examples: garden create remote-variables varlist_123 DB_PASSWORD=my-pwd ACCESS_KEY=my-key # create two variables garden create remote-variables varlist_123 ACCESS_KEY=my-key --scope-to-env ci # create a variable and scope it to the ci environment garden create remote-variables varlist_123 ACCESS_KEY=my-key --scope-to-env ci --scope-to-user # create a variable and scope it to the ci environment and user garden create remote-variables varlist_123 --from-file /path/to/variables.env # create variables from the key value pairs in the variables.env file garden create remote-variables varlist_123 SECRET_KEY=my-secret --secret=false # create a non-secret variable

See the Variables and Templating guide for more information.

Usage

Arguments

Argument
Required
Description

variable-list-id

No

The ID of the variable list to create the variables in. You can use the `garden get variable-list` to

look up the variable list IDs.

variables

No

The names and values of the variables to create, separated by '='. You may specify multiple

variable name/value pairs, separated by spaces. Note that you can also leave this empty

and have Garden read the variables from file.

Options

Argument
Alias
Type
Description

--scope-to-user-id

string

Scope the variable to a user with the given ID. User scoped variables must be scoped to an environment as well.

--scope-to-env

string

Scope the variable to an environment. Note that this does not default to the environment

that the command runs in (i.e. the one set via the --env flag) and that you need to set this explicitly if

you want to create an environment scoped variable.

--from-file

path

Read the variables from the file at the given path. The file should have standard "dotenv"

format, as defined by dotenv.

--secret

boolean

Store the variable as an encrypted secret. Defaults to true.

--description

string

Description for the variable.

--expires-at

string

ISO 8601 date string for when the variable expires.

Outputs

garden cleanup namespace

Deletes a running namespace.

This will clean up everything deployed in the specified environment, and trigger providers to clear up any other resources and reset it. When you then run garden deploy after, the namespace will be reconfigured.

This can be useful if you find the namespace to be in an inconsistent state, or need/want to free up resources.

Usage

Options

Argument
Alias
Type
Description

--dependants-first

boolean

Clean up Deploy(s) (or services if using modules) in reverse dependency order. That is, if service-a has a dependency on service-b, service-a will be deleted before service-b when calling `garden cleanup namespace service-a,service-b --dependants-first`.

When this flag is not used, all services in the project are cleaned up simultaneously.

Outputs

garden cleanup deploy

Cleans up running deployments (or services if using modules).

Cleans up (i.e. un-deploys) the specified actions. Cleans up all deploys/services in the project if no arguments are provided. Note that this command does not take into account any deploys depending on the cleaned up actions, and might therefore leave the project in an unstable state. Running garden deploy after will re-deploy anything missing.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the deploy(s) (or services if using modules) to delete. You may specify multiple names, separated by spaces.

Options

Argument
Alias
Type
Description

--dependants-first

boolean

Clean up Deploy(s) (or services if using modules) in reverse dependency order. That is, if service-a has a dependency on service-b, service-a will be deleted before service-b when calling `garden cleanup namespace service-a,service-b --dependants-first`.

When this flag is not used, all services in the project are cleaned up simultaneously. | --with-dependants | | boolean | Also clean up deployments/services that have dependencies on one of the deployments/services specified as CLI arguments (recursively). When used, this option implies --dependants-first. Note: This option has no effect unless a list of names is specified as CLI arguments (since then, every deploy/service in the project will be deleted).

Outputs

garden cleanup remote-variables

Delete remote variables from Garden Cloud.

Delete remote variables in Garden Cloud. You will need the IDs of the variables you want to delete, which you can get from the garden get remote-variables command.

Examples: garden delete remote-variables <ID 1> <ID 2> <ID 3> # delete the remote variables with the given IDs.

Usage

Arguments

Argument
Required
Description

ids

No

The ID(s) of the cloud variables to delete.

Outputs

garden deploy

Deploy actions to your environment.

Deploys all or specified Deploy actions, taking into account dependency order. Also performs builds and other dependencies if needed.

Optionally stays running and automatically re-builds and re-deploys if sources (or dependencies' sources) change.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the Deploy(s) (or services if using modules) to deploy (skip to deploy everything). You may specify multiple names, separated by spaces.

Options

Argument
Alias
Type
Description

--force

boolean

Force re-deploy.

--force-build

boolean

Force re-build of build dependencies.

--sync

array:string

The name(s) of the Deploy(s) to deploy with sync enabled.

You may specify multiple names by setting this flag multiple times.

Use * to deploy all supported deployments with sync enabled.

Important: The syncs stay active after the command exits. To stop the syncs, use the `sync stop` command. | --skip | | array:string | The name(s) of Deploys you'd like to skip. | --skip-dependencies | | boolean | Skip deploy, test and run dependencies. Build dependencies and runtime output reference dependencies are not skipped. This can be useful e.g. when your stack has already been deployed, and you want to run specific Deploys in sync mode without deploying or running dependencies that may have changed since you last deployed. | --with-dependants | | boolean | Additionally deploy all deploy actions that are downstream dependants of the action(s) being deployed. This can be useful when you know you need to redeploy dependants. | --disable-port-forwards | | boolean | Disable automatic port forwarding when running persistently. Note that you can also set GARDEN_DISABLE_PORT_FORWARDS=true in your environment. | --forward | | boolean | Create port forwards and leave process running after deploying. This is implied if any of --sync / --local or --logs are set. | --logs | | boolean | Stream logs from the requested Deploy(s) (or services if using modules) during deployment, and leave the log streaming process running after deploying. Note: This option implies the --forward option. | --timestamps | | boolean | Show timestamps with log output. Should be used with the `--logs` option (has no effect if that option is not used). | --port | | number | The port number for the server to listen on (defaults to 9777 if available).

Outputs

garden diff

[EXPERIMENTAL] Compare the current working directory Garden project with the specified branch or commit.

[EXPERIMENTAL] This command is still under development and may change in the future, including parameters and output format.

Compare the current working directory Garden project with the specified branch/commit, or with other differences (all specified via --b-X flags).

Use this to understand the impact of your changes on action versions.

In the output, "A" (e.g. "version A") refers to the current working directory project, and "B" refers to the project at the specified branch or commit. When something is reported as "added" (such as an action, file, new lines in a config etc.), it means it's present in the current project but not in the comparison project. Similarly, "removed" means it's present in the comparison project but not in the current project.

The different --b-X flags define the comparison project (B). At least one of these flags must be specified, and they can be combined in any number of ways.

When setting the --b-X flags, the values will be overridden in the comparison project (B). If you want to change variables or set a different environment in the current project (A), you can use the normal --var, --env etc. flags. For example, if you want to test the impact of overriding a variable value for both sides, you can use the --var flag to override the value in the current project (A), and then use the --b-var flag to override the value in the comparison project (B), e.g. --b-var some-var=foo --var some-var=bar.

In most cases you should use this with the --resolve flag to ensure that the comparison is complete, but take caution as it may result in actions being executed during resolution (e.g. if a runtime output is referenced by another action, it will be executed in order to fully resolve the config). In such cases, you may want to avoid this option or use the --action flag to only diff specific actions.

Examples:

compare the current default environment to the ci environment (assuming one is defined in the project configuration)

garden diff --b-env ci

compare the current default environment to the ci environment and fully resolve values for a complete comparison (note that this may trigger actions being executed)

garden diff --b-env ci --resolve

compare the staging env to the ci env

garden diff --env staging --b-env ci

compare the current branch to other-branch (using the default environment in both cases)

garden diff --b-branch other-branch

compare the current branch's default environment to other-branch's ci environment

garden diff --b-branch other-branch --b-env ci

compare the resolved api Build action between the default environment and ci

garden diff --b-env ci --action build.api --resolve

compare the current default environment to the ci environment and override the HOSTNAME variable in the ci environment

garden diff --b-env ci --b-var HOSTNAME=remote.acme

compare the current default environment to the ci environment and override the HOSTNAME variable in both environments

garden diff --var HOSTNAME=local.acme --b-env ci --b-var HOSTNAME=remote.acme

Usage

Options

Argument
Alias
Type
Description

--b-commit

string

Check out the specified commit in the comparison project (B).

--b-branch

string

Check out the specified branch in the comparison project (B).

--b-env

string

Override the Garden environment for the comparison project (B).

--b-local-env-var

array:tag

Override a local environment variable in the comparison project (B), as templated using ${local.env.*}, with the specified value. This should be formatted as <VAR_NAME>:<VALUE>, e.g. "MY_VAR=my-value". You can specify multiple variables by repeating the flag.

--b-var

array:tag

Override a Garden variable in the comparison project (B) with the specified value, formatted as <VAR_NAME>:<VALUE>, e.g. "MY_VAR=my-value". Analogous to the --var global flag in the Garden CLI. You can specify multiple variables by repeating the flag.

--resolve

boolean

Fully resolve each action before comparing. Note that this may result in actions being executed during resolution (e.g. if a runtime output is referenced by another action, it will be executed in order to fully resolve the config). In such cases, you may want to avoid this option or use the --action flag to only diff specific actions.

--action

array:string

Specify an action to diff, as <kind>.<name>. Can be specified multiple times. If none is specified, all actions will be compared.

garden exec

Executes a command (such as an interactive shell) in a running service.

Finds an active container for a deployed Deploy and executes the given command within the container. Supports interactive shells. You can specify the command to run as a parameter, or pass it after a -- separator. For commands with arguments or quoted substrings, use the -- separator.

NOTE: This command may not be supported for all action types. The use of the positional command argument is deprecated. Use -- followed by your command instead.

Examples:

Usage

Arguments

Argument
Required
Description

deploy

Yes

The running Deploy action to exec the command in.

command

No

The use of the positional command argument is deprecated. Use `--` followed by your command instead.

Options

Argument
Alias
Type
Description

--interactive

boolean

Set to false to skip interactive mode and just output the command result

--target

string

Specify name of the target if a Deploy action consists of multiple components. NOTE: This option is only relevant in certain scenarios and will be ignored otherwise. For Kubernetes deploy actions, this is useful if a Deployment includes multiple containers, such as sidecar containers. By default, the container with `kubectl.kubernetes.io/default-container` annotation or the first container is picked.

Outputs

garden get graph

Outputs the dependency relationships across the project.

Usage

garden get config

Outputs the full configuration for this project and environment.

Usage

Options

Argument
Alias
Type
Description

--exclude-disabled

boolean

Exclude disabled action and module configs from output.

--resolve

full partial

Choose level of resolution of config templates. Defaults to full. Specify --resolve=partial to avoid resolving providers.

Outputs

garden get files

List all files from all or specified actions.

This is useful to diagnose issues with ignores, include and exclude for a given action.

Usage

Arguments

Argument
Required
Description

keys

No

One or more action keys (e.g. deploy.api), separated by spaces. If omitted, all actions are queried.

Outputs

garden get linked-repos

Outputs a list of all linked remote sources, actions and modules for this project.

Usage

garden get outputs

Resolves and returns the outputs of the project.

Resolves and returns the outputs of the project. If necessary, this may involve deploying services and/or running tasks referenced by the outputs in the project configuration.

Examples:

Usage

Outputs

garden get modules

Outputs all or specified modules.

Outputs all or specified modules. Use with --output=json and jq to extract specific fields.

Examples:

Usage

Arguments

Argument
Required
Description

modules

No

Specify module(s) to list. You may specify multiple modules, separated by spaces. Skip to return all modules.

Options

Argument
Alias
Type
Description

--full

boolean

Show the full config for each module, with template strings resolved. Has no effect when the --output option is used.

--exclude-disabled

boolean

Exclude disabled modules from output.

Outputs

garden get status

Outputs the full status of your project/environment and all actions.

Usage

Options

Argument
Alias
Type
Description

--skip-detail

boolean

Skip plugin specific details. Only applicable when using the --output=json

Outputs

garden get actions

Outputs all or specified actions.

Outputs all or specified actions. Use with --output=json and jq to extract specific fields.

Examples:

garden get actions # list all actions in the project garden get actions --include-state # list all actions in the project with state in output garden get actions --detail # list all actions in project with detailed info garden get actions --kind deploy # only list the actions of kind 'Deploy' garden get actions a b --kind build --sort type # list actions 'a' and 'b' of kind 'Build' sorted by type garden get actions build.a deploy.b # list actions 'build.a' and 'deploy.b' garden get actions --include-state -o=json # get json output

Usage

Arguments

Argument
Required
Description

names

No

Specify name(s) of the action(s) to list. You may specify multiple actions, separated by spaces. Skip to return all actions.

Options

Argument
Alias
Type
Description

--detail

boolean

Show the detailed info for each action, including path, dependencies, dependents, associated module and if the action is disabled.

--include-state

boolean

Include state of action(s) in output.

--sort

name kind type

Sort the actions result by action name, kind or type. By default action results are sorted by name.

--kind

build deploy run test

Choose actions of specific kind only. By default all actions are shown.

Outputs

garden get deploys

Lists the deploy actions defined in your project.

Lists all or specified deploy action(s). Use with --output=json and jq to extract specific fields.

Examples:

garden get deploys # list all deploy actions in the project garden get deploys --include-state # list all deploy actions in the project including action state in output garden get deploys --detail # list all deploy actions in project with detailed info garden get deploys A B --sort type # list only deploy actions A and B sorted by type

Usage

Arguments

Argument
Required
Description

names

No

Specify name(s) of the deploy action(s) to list. You may specify multiple actions, separated by spaces. Skip to return all deploy actions.

Options

Argument
Alias
Type
Description

--detail

boolean

Show the detailed info for each deploy action, including path, dependencies, dependents, associated module and if the deploy action is disabled.

--include-state

boolean

Include state of deploy(s) in output.

--sort

name type

Sort the deploy actions result by action name or type. By default deploy action results are sorted by name.

Outputs

garden get builds

Lists the build actions defined in your project.

Lists all or specified build action(s). Use with --output=json and jq to extract specific fields.

Examples:

garden get builds # list all build actions in the project garden get builds --include-state # list all build actions in the project including action state in output garden get builds --detail # list all build actions in project with detailed info garden get builds A B --sort type # list only build actions A and B sorted by type

Usage

Arguments

Argument
Required
Description

names

No

Specify name(s) of the build action(s) to list. You may specify multiple actions, separated by spaces. Skip to return all build actions.

Options

Argument
Alias
Type
Description

--detail

boolean

Show the detailed info for each build action, including path, dependencies, dependents, associated module and if the build action is disabled.

--include-state

boolean

Include state of build(s) in output.

--sort

name type

Sort the build actions result by action name or type. By default build action results are sorted by name.

Outputs

garden get runs

Lists the run actions defined in your project.

Lists all or specified run action(s). Use with --output=json and jq to extract specific fields.

Examples:

garden get runs # list all run actions in the project garden get runs --include-state # list all run actions in the project including action state in output garden get runs --detail # list all run actions in project with detailed info garden get runs A B --sort type # list only run actions A and B sorted by type

Usage

Arguments

Argument
Required
Description

names

No

Specify name(s) of the run action(s) to list. You may specify multiple actions, separated by spaces. Skip to return all run actions.

Options

Argument
Alias
Type
Description

--detail

boolean

Show the detailed info for each run action, including path, dependencies, dependents, associated module and if the run action is disabled.

--include-state

boolean

Include state of run(s) in output.

--sort

name type

Sort the run actions result by action name or type. By default run action results are sorted by name.

Outputs

garden get tests

Lists the test actions defined in your project.

Lists all or specified test action(s). Use with --output=json and jq to extract specific fields.

Examples:

garden get tests # list all test actions in the project garden get tests --include-state # list all test actions in the project including action state in output garden get tests --detail # list all test actions in project with detailed info garden get tests A B --sort type # list only test actions A and B sorted by type

Usage

Arguments

Argument
Required
Description

names

No

Specify name(s) of the test action(s) to list. You may specify multiple actions, separated by spaces. Skip to return all test actions.

Options

Argument
Alias
Type
Description

--detail

boolean

Show the detailed info for each test action, including path, dependencies, dependents, associated module and if the test action is disabled.

--include-state

boolean

Include state of test(s) in output.

--sort

name type

Sort the test actions result by action name or type. By default test action results are sorted by name.

Outputs

garden get run-result

Outputs the latest result of a run (or task, if using modules).

Usage

Arguments

Argument
Required
Description

name

Yes

The name of the run (or task, if using modules)

Outputs

garden get test-result

Outputs the latest execution result of a provided test.

Usage

Arguments

Argument
Required
Description

name

Yes

The name of the test. If this test belongs to a module, specify the module name here instead, and specify the test name from the module in the second argument.

moduleTestName

No

When the test belongs to a module, specify its name here (i.e. as the second argument).

Outputs

garden get debug-info

Outputs the status of your environment for debug purposes.

Examples:

garden get debug-info # create a zip file at the root of the project with debug information garden get debug-info --format yaml # output provider info as YAML files (default is JSON) garden get debug-info --include-project # include provider info for the project namespace (disabled by default)

Usage

Options

Argument
Alias
Type
Description

--format

json yaml

The output format for plugin-generated debug info.

--include-project

boolean

Include project-specific information from configured providers.

Note that this may include sensitive data, depending on the provider and your configuration.

garden get workflows

Lists the workflows defined in your project.

Usage

Arguments

Argument
Required
Description

workflows

No

Specify workflow(s) to list. You may specify multiple workflows, separated by spaces.

garden get variables

Get variables

List variables in this project, both those those defined in the project configuration and in individual actions, and including remote variables and variables from varfiles. This is useful for seeing where variables are set and what value they resolve to when using template strings.

Note that by default, template strings are not resolved for action-level variables. To resolve all template strings, use the --resolve=full option. Note that this may trigger actions being executed in case a given action references the runtime output of another in its variables field.

Examples: garden get variables # list all variables and pretty print results garden get variables --resolve full # list all variables and resolve template strings, including runtime outputs garden get variables --filter-actions build.api --filter-actions deploy.api # list variables for the Build api and Deploy api actions garden get variables --output json # return variables as a JSON object, useful for scripting

Usage

Options

Argument
Alias
Type
Description

--resolve

full partial

Choose level of resolution of variables. Defaults to `partial` which means that template strings in

action-level variables are not resolved and the raw template string is returned. Use `--resolve=full`

to resolve the full value but note that this may trigger actions being executed in case a given action

references the runtime output of another in its `variables` field.

--exclude-disabled

boolean

Exclude disabled actions and from output.

--filter-actions

array:string

Filter by action using <actionKind>.<actionName>. You may specify multiple names, separated by spaces. For

example `--filter-actions build.api --filter-actions deploy.api"` (or `--filter-actions build.api,deploy.api`).

Outputs

garden get users

Get users

List the users that belong to this Garden Cloud organization (i.e. in https://app.garden.io). Only relevant for projects that are connected to Garden Cloud and have an organizationId set in the project configuration.

See the Connecting a project guide to learn more about connecting projects to Garden Cloud.

Examples: garden get users # list users and pretty print results garden get users --current-user # show only the current user garden get users --output json # returns users as a JSON object, useful for scripting

Usage

Options

Argument
Alias
Type
Description

--current-user

boolean

Only show the current user.

Outputs

garden get variable-lists

Get variable lists

List the variable lists that belong to this Garden Cloud organization (i.e. in https://app.garden.io). Only relevant for projects that are connected to Garden Cloud and have an organizationId set in the project configuration.

See the Connecting a project guide to learn more about connecting projects to Garden Cloud.

Variable lists are used to group together remote variables and this command can be used to get the variable list IDs that are needed for the garden create cloud-variables command.

Examples: garden get variable-lists # list variable lists and pretty print results garden get variable-lists --output json # returns variable lists as a JSON object, useful for scripting

See the Variables and Templating guide for more information.

Usage

Outputs

garden get remote-variables

Get remote variables from Garden Cloud

List the remote variables that belong to this Garden Cloud organization (i.e. in https://app.garden.io). Only relevant for projects that are connected to Garden Cloud and have an organizationId set in the project configuration.

See the Connecting a project guide to learn more about connecting projects to Garden Cloud.

List all remote variables for the variable lists configured in this project. This is useful for seeing the IDs of remote variables (e.g. for use with the garden delete remote-variables command) and for viewing cloud-specific information such as scoping and expiration.

Examples: garden get remote-variables # list remote variables and pretty print results garden get remote-variables --output json # returns remote variables as a JSON object, useful for scripting

See the Variables and Templating guide for more information.

Usage

Outputs

Link a remote source to a local directory.

After linking a remote source, Garden will read it from its local directory instead of from the remote URL. Garden can only link remote sources that have been declared in the project level garden.yml config.

Examples:

Usage

Arguments

Argument
Required
Description

source

Yes

Name of the source to link as declared in the project config.

path

Yes

Path to the local directory that contains the source.

Outputs

Link a remote action to a local directory.

After linking a remote action, Garden will read the source from the linked local directory instead of the remote repository. Garden can only link actions that have a remote source, i.e. actions that specify a source.repository.url in their configuration.

Examples:

Usage

Arguments

Argument
Required
Description

action

Yes

The full key of the action (e.g. deploy.api).

path

Yes

Path to the local directory that contains the action.

Outputs

Link a remote module to a local directory.

After linking a remote module, Garden will read the source from the module's local directory instead of from the remote URL. Garden can only link modules that have a remote source, i.e. modules that specify a repositoryUrl in their garden.yml config file.

Examples:

Usage

Arguments

Argument
Required
Description

module

Yes

Name of the module to link.

path

Yes

Path to the local directory that contains the module.

Outputs

garden login

Log in to Garden Cloud.

Logs you in to Garden Cloud. Subsequent commands will have access to cloud features.

Usage

garden logout

Log out of Garden Cloud.

Logs you out of Garden Cloud.

Usage

garden logs

Retrieves the most recent logs for the specified Deploy(s).

Outputs logs for all or specified Deploys, and optionally waits for new logs to come in. Defaults to getting logs from the last minute when in --follow mode. You can change this with the --since or --tail options.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the Deploy(s) to log (skip to get logs from all Deploys in the project). You may specify multiple names, separated by spaces.

Options

Argument
Alias
Type
Description

--tag

array:tag

Only show log lines that match the given tag, e.g. `--tag 'container=foo'`. If you specify multiple filters in a single tag option (e.g. `--tag 'container=foo,someOtherTag=bar'`), they must all be matched. If you provide multiple `--tag` options (e.g. `--tag 'container=api' --tag 'container=frontend'`), they will be OR-ed together (i.e. if any of them match, the log line will be included). You can specify glob-style wildcards, e.g. `--tag 'container=prefix-*'`.

--follow

boolean

Continuously stream new logs. When the `--follow` option is set, we default to `--since 1m`.

--tail

number

Number of lines to show for each deployment. Defaults to showing all log lines (up to a certain limit). Takes precedence over the `--since` flag if both are set. Note that we don't recommend using a large value here when in follow mode.

--show-tags

boolean

Show any tags attached to each log line. May not apply to all providers

--timestamps

boolean

Show timestamps with log output.

--since

moment

Only show logs newer than a relative duration like 5s, 2m, or 3h. Defaults to `"1m"` when `--follow` is true unless `--tail` is set. Note that we don't recommend using a large value here when in follow mode.

--hide-name

boolean

Hide the action name and render the logs directly.

garden options

Print global options.

Prints all global options (options that can be applied to any command).

Usage

garden plugins

Plugin-specific commands.

Execute a command defined by a plugin in your project. Run without arguments to get a list of all plugin commands available. Run with just the plugin name to get a list of commands provided by that plugin.

Examples:

Usage

Arguments

Argument
Required
Description

plugin

No

The name of the plugin, whose command you wish to run.

command

No

The name of the command to run.

garden publish

Build and publish artifacts (e.g. container images) to a remote registry.

Publishes built artifacts for all or specified builds. Also builds dependencies if needed.

By default the artifacts/images are tagged with the Garden action version, but you can also specify the --tag option to specify a specific string tag or a templated tag. Any template values that can be used on the build being tagged are available, in addition to ${build.name}, ${build.version} and ${build.hash} tags that allows referencing the name of the build being tagged, as well as its Garden version. ${build.version} includes the "v-" prefix normally used for Garden versions, ${build.hash} doesn't.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the builds (or modules) to publish (skip to publish every build). You may specify multiple names, separated by spaces.

Options

Argument
Alias
Type
Description

--force-build

boolean

Force rebuild before publishing.

--tag

string

Override the tag on the built artifacts. You can use the same sorts of template strings as when templating values in configs, with the addition of ${build.*} tags, allowing you to reference the name and Garden version of the module being tagged.

Outputs

garden run

Perform one or more Run actions

This is useful for any ad-hoc Runs, for example database migrations, or when developing.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the Run action(s) to perform. You may specify multiple names, separated by spaces. Accepts glob patterns (e.g. init* would run both 'init' and 'initialize').

Options

Argument
Alias
Type
Description

--force

boolean

Run even if the action is disabled for the environment, and/or a successful result is found in cache.

--force-build

boolean

Force re-build of Build dependencies before running.

--module

array:string

The name(s) of one or modules to pull Runs (or tasks if using modules) from. If both this and Run names are specified, the Run names filter the tasks found in the specified modules.

--skip

array:string

The name(s) of Runs you'd like to skip. Accepts glob patterns (e.g. init* would skip both 'init' and 'initialize').

--skip-dependencies

boolean

Don't perform any Deploy or Run actions that the requested Runs depend on.

This can be useful e.g. when your stack has already been deployed, and you want to run Tests with runtime

dependencies without redeploying any Deploy (or service if using modules) dependencies that may have changed since you last deployed.

Warning: Take great care when using this option in CI, since Garden won't ensure that the runtime dependencies of your test suites are up to date when this option is used.

Outputs

garden workflow

Run a Workflow.

Runs the commands and/or scripts defined in the workflow's steps, in sequence.

Examples:

Usage

Arguments

Argument
Required
Description

workflow

Yes

The name of the workflow to be run.

garden self-update

Update the Garden CLI.

Updates your Garden CLI in-place.

Defaults to the latest minor release version, but you can also request a specific release version as an argument.

Examples:

garden self-update # update to the latest minor Garden CLI version garden self-update edge-acorn # switch to the latest edge build of garden Acorn (0.12) garden self-update edge-bonsai # switch to the latest edge build of garden Bonsai (0.13) garden self-update edge-cedar # switch to the latest edge build of garden Cedar (0.14) garden self-update 0.13.55 # switch to the exact version 0.13.55 of the CLI garden self-update --major # install the latest version, even if it's a major bump garden self-update --force # re-install even if the same version is detected garden self-update --install-dir ~/garden # install to ~/garden instead of detecting the directory

Usage

Arguments

Argument
Required
Description

version

No

Specify which version to switch/update to. It can be either a stable release, a pre-release, or an edge release version.

Options

Argument
Alias
Type
Description

--force

boolean

Install the Garden CLI even if the specified or detected latest version is the same as the current version.

--install-dir

string

Specify an installation directory, instead of using the directory of the Garden CLI being used. Implies --force.

--platform

macos linux alpine windows

Override the platform, instead of detecting it automatically.

--architecture

arm64 amd64

Override the architecture, instead of detecting it automatically.

--major

boolean

Install the latest major version of Garden. Falls back to the current version if the greater major version does not exist.

Note! If you use a non-stable version (i.e. pre-release, or draft, or edge), then the latest possible major version will be installed.

garden sync start

Start any configured syncs to the given Deploy action(s).

Start a sync between your local project directory and one or more Deploys.

Examples: # start syncing to the 'api' Deploy, fail if it's not already deployed in sync mode garden sync start api

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of one or more Deploy(s) (or services if using modules) to sync. You may specify multiple names, separated by spaces. To start all possible syncs, specify '*' as an argument.

Options

Argument
Alias
Type
Description

--deploy

boolean

Deploy the specified actions, if they're out of date and/or not deployed in sync mode.

--with-dependencies

boolean

When deploying actions, also include any runtime dependencies. Ignored if --deploy is not set.

--monitor

boolean

Keep the process running and print sync status logs after starting them.

garden sync stop

Stop any active syncs to the given Deploy action(s).

Stops one or more active syncs.

Examples: # stop syncing to the 'api' Deploy garden sync stop api

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of one or more Deploy(s) (or services if using modules) to sync. You may specify multiple names, separated by spaces. To start all possible syncs, run the command with no arguments.

garden sync restart

Restart any active syncs to the given Deploy action(s).

Restarts one or more active syncs.

Examples: # Restart syncing to the 'api' Deploy garden sync restart api

Usage

Arguments

Argument
Required
Description

names

Yes

The name(s) of one or more Deploy(s) (or services if using modules) whose syncs you want to restart. You may specify multiple names, separated by spaces. To restart all possible syncs, specify '*' as an argument.

garden sync status

Get sync statuses.

Get the current status of the configured syncs for this project.

Examples: # get all sync statuses garden sync status

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the Deploy(s) to get the sync status for (skip to get status from all Deploys in the project). You may specify multiple names, separated by space.

Options

Argument
Alias
Type
Description

--skip-detail

boolean

Skip plugin specific sync details. Only applicable when using the --output=json

garden test

Run all or specified Test actions in the project.

Runs all or specified Tests defined in the project. Also run builds and other dependencies, including Deploys if needed.

Examples:

Usage

Arguments

Argument
Required
Description

names

No

The name(s) of the Test action(s) to test (skip to run all tests in the project). You may specify multiple test names, separated by spaces. Accepts glob patterns (e.g. integ* would run both 'integ' and 'integration').

Options

Argument
Alias
Type
Description

--name

array:string

DEPRECATED: This option will be removed in 0.15. Please use a positional argument "<module name>-<test name>" or "*-<test name>" instead of "--name".

This option can be used to run all tests with the specified name (e.g. unit or integ) in declared in any module.

Note: Since 0.13, using the --name option is equivalent to using the positional argument "*-<test name>". This means that new tests declared using the new Action kinds will also be executed if their name matches this pattern.

Accepts glob patterns (e.g. integ* would run both 'integ' and 'integration').

--force

boolean

Force re-run of Test, even if a successful result is found in cache.

--force-build

boolean

Force rebuild of any Build dependencies encountered.

--interactive

boolean

Run the specified Test in interactive mode (i.e. to allow attaching to a shell). A single test must be selected, otherwise an error is thrown.

--module

array:string

The name(s) of one or modules to run tests from. If both this and test names are specified, the test names filter the tests found in the specified modules.

--skip

array:string

The name(s) of tests you'd like to skip. Accepts glob patterns (e.g. integ* would skip both 'integ' and 'integration'). Applied after the 'name' filter.

--skip-dependencies

boolean

Don't deploy any Deploys (or services if using modules) or run any Run actions (or tasks if using modules) that the requested tests depend on. This can be useful e.g. when your stack has already been deployed, and you want to run Tests with runtime dependencies without redeploying any Deploy (or service) dependencies that may have changed since you last deployed. Warning: Take great care when using this option in CI, since Garden won't ensure that the runtime dependencies of your test suites are up to date when this option is used.

Outputs

garden tools

Access tools included by providers.

Run a tool defined by a provider in your project, downloading and extracting it if necessary. Run without arguments to get a list of all tools available.

Run with the --get-path flag to just print the path to the binary or library directory (depending on the tool type). If the tool is a non-executable library, this flag is implicit.

When multiple plugins provide a tool with the same name, you can choose a specific plugin/version by specifying ., instead of just . This is generally advisable when using this command in scripts, to avoid accidental conflicts.

When there are name conflicts and a plugin name is not specified, we first prefer tools defined by configured providers in the current project (if applicable), and then alphabetical by plugin name.

Examples:

Usage

Arguments

Argument
Required
Description

tool

No

The name of the tool to run.

Options

Argument
Alias
Type
Description

--get-path

boolean

If specified, we print the path to the binary or library instead of running it.

Unlink a previously linked remote source from its local directory.

After unlinking a remote source, Garden will go back to reading it from its remote URL instead of its local directory.

Examples:

Usage

Arguments

Argument
Required
Description

sources

No

The name(s) of the source(s) to unlink. You may specify multiple sources, separated by spaces.

Options

Argument
Alias
Type
Description

--all

boolean

Unlink all sources.

Unlink a previously linked remote action from its local directory.

After unlinking a remote action, Garden will go back to reading the action's source from its remote repository instead of its local directory.

Examples:

Usage

Arguments

Argument
Required
Description

actions

No

The name(s) of the action(s) to unlink. You may specify multiple actions, separated by spaces.

Options

Argument
Alias
Type
Description

--all

boolean

Unlink all actions.

Unlink a previously linked remote module from its local directory.

After unlinking a remote module, Garden will go back to reading the module's source from its remote URL instead of its local directory.

Examples:

Usage

Arguments

Argument
Required
Description

modules

No

The name(s) of the module(s) to unlink. You may specify multiple modules, separated by spaces.

Options

Argument
Alias
Type
Description

--all

boolean

Unlink all modules.

garden up

Spin up your stack with the dev console and streaming logs.

Spin up your stack with the dev console and streaming logs.

This is basically an alias for garden dev --cmd 'deploy --logs', but you can add any arguments and flags supported by the deploy command as well.

Usage

garden update-remote sources

Update remote sources.

Updates the remote sources declared in the project level garden.yml config file.

Examples:

Usage

Arguments

Argument
Required
Description

sources

No

The name(s) of the remote source(s) to update. You may specify multiple sources, separated by spaces.

Options

Argument
Alias
Type
Description

--parallel

boolean

Allow git updates to happen in parallel. This will automatically reject any Git prompt, such as username / password.

Outputs

garden update-remote actions

Update remote actions.

Updates remote actions, i.e. actions that have a source.repository.url field set in their config that points to a remote repository.

Examples:

Usage

Arguments

Argument
Required
Description

actions

No

The name(s) of the remote action(s) to update. You may specify multiple actions, separated by spaces.

Options

Argument
Alias
Type
Description

--parallel

boolean

Allow git updates to happen in parallel. This will automatically reject any Git prompt, such as username / password.

Outputs

garden update-remote modules

Update remote modules.

Updates remote modules, i.e. modules that have a repositoryUrl field in their garden.yml config that points to a remote repository.

Examples:

Usage

Arguments

Argument
Required
Description

modules

No

The name(s) of the remote module(s) to update. You may specify multiple modules, separated by spaces.

Options

Argument
Alias
Type
Description

--parallel

boolean

Allow git updates to happen in parallel. This will automatically reject any Git prompt, such as username / password.

Outputs

garden update-remote all

Update all remote sources, actions and modules.

Examples:

Usage

Options

Argument
Alias
Type
Description

--parallel

boolean

Allow git updates to happen in parallel. This will automatically reject any Git prompt, such as username / password.

Outputs

garden util fetch-tools

Pre-fetch plugin tools.

Pre-fetch all the available tools for the configured providers in the current project/environment, or all registered providers if the --all parameter is specified.

Examples:

Usage

Options

Argument
Alias
Type
Description

--all

boolean

Fetch all tools for registered plugins, instead of just ones in the current env/project.

garden util hide-warning

Hide a specific warning message.

Hides the specified warning message. The command and key is generally provided along with displayed warning messages.

Usage

Arguments

Argument
Required
Description

key

Yes

The key of the warning to hide (this will be shown along with relevant warning messages).

garden util mutagen

Run any Mutagen CLI command in the context of the current project.

The Mutagen tool is used for various functions in Garden, most notably syncs (formerly "dev mode") to containers. When experiencing issues with synchronization, it may be helpful to use the Mutagen CLI directly to troubleshoot or gather more information.

This command simply runs the Mutagen CLI with environment variables appropriately set to interact with the syncs created in the context of this project. All arguments and flags are passed directly to Mutagen.

Examples:

Usage

garden util profile-project

Renders a high-level summary of actions and modules in your project.

Useful for diagnosing slow init performance for projects with lots of actions and modules and/or lots of files.

Usage

garden validate

Check your garden configuration for errors.

Throws an error and exits with code 1 if something's not right in your garden config files.

Examples:

Usage

Options

Argument
Alias
Type
Description

--resolve

array:string

Fully resolve a specific action, including references to runtime outputs from other actions. Actions should be specified as `<kind>.<name>` (e.g. `deploy.my-service` or `build.my-image`). This option can be specified multiple times to fully resolve multiple actions. Use * to fully resolve all actions. Note that this may result in actions being executed during validation (e.g. if a runtime output is referenced by another action, it will be executed in order to fully resolve the config). In such cases, we recommend not using this option.

garden version

Shows the current garden version.

Usage

Last updated

Was this helpful?