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:
--root
-r
path
Override project root directory (defaults to working directory). Can be absolute or relative to current directory.
--silent
-s
boolean
Suppress log output. Same as setting --logger-type=quiet.
--env
-e
string
The environment (and optionally namespace) to work against.
--logger-type
quiet
basic
fancy
json
Set logger type. fancy updates log lines in-place when their status changes (e.g. when tasks complete), basic appends a new log line when a log line's status changes, json same as basic, but renders log lines as JSON, quiet suppresses all log output, same as --silent.
--log-level
-l
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.
--output
-o
json
yaml
Output command result in specified format (note: disables progress logging and interactive functionality).
--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.
--yes
-y
boolean
Automatically approve any yes/no prompts during execution.
--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"`.
--version
-v
boolean
Show the current CLI version.
--help
-h
boolean
Show help
--disable-port-forwards
boolean
Disable automatic port forwarding when in watch/hot-reload mode. Note that you can also set GARDEN_DISABLE_PORT_FORWARDS=true in your environment.
garden build
Build your modules.
Builds all or specified modules, taking into account build dependency order. Optionally stays running and automatically builds modules if their source (or their dependencies' sources) change.
Examples:
Usage
Arguments
modules
No
Specify module(s) to build. Use comma as a separator to specify multiple modules.
Options
--force
-f
boolean
Force rebuild of module(s).
--watch
-w
boolean
Watch for changes in module(s) and auto-build.
--with-dependants
boolean
Also rebuild modules that have build dependencies on one of the modules specified as CLI arguments (recursively). Note: This option has no effect unless a list of module names is specified as CLI arguments (since then, every module in the project will be rebuilt).
Outputs
garden call
Call a service ingress endpoint.
Resolves the deployed ingress endpoint for the given service and path, calls the given endpoint and outputs the result.
Examples:
Note: Currently only supports simple GET requests for HTTP/HTTPS ingresses.
Usage
Arguments
serviceAndPath
Yes
The name of the service to call followed by the ingress path (e.g. my-container/somepath).
garden config analytics-enabled
Update your preferences regarding analytics.
To help us make Garden better, you can opt in to the collection of usage data. 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-in when running Garden for the first time and you can use this command to update your preferences later.
Examples:
Usage
Arguments
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 commentented-out fields. Also creates a default (blank) .gardenignore file in the same path.
Examples:
Usage
Options
--skip-comments
boolean
Set to true to disable comment generation.
--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
-i
boolean
Set to false to disable interactive prompts.
--name
string
Name of the project (defaults to current directory name).
garden create module
Create a new Garden module.
Creates a new Garden module configuration. The generated config includes some default values, as well as the schema of the config in the form of commentented-out fields.
Examples:
Usage
Options
--skip-comments
boolean
Set to true to disable comment generation.
--dir
path
Directory to place the module in (defaults to current directory).
--filename
string
Filename to place the module config in (defaults to garden.yml).
--interactive
-i
boolean
Set to false to disable interactive prompts.
--name
string
Name of the module (defaults to current directory name).
--type
string
The module type to create. Required if --interactive=false.
garden delete secret
Delete a secret from the environment.
Returns with an error if the provided key could not be found by the provider.
Examples:
Usage
Arguments
provider
Yes
The name of the provider to remove the secret from.
key
Yes
The key of the configuration variable. Separate with dots to get a nested key (e.g. key.nested).
garden delete environment
Deletes a running environment.
This will delete all services in the specified environment, and trigger providers to clear up any other resources and reset it. When you then run garden deploy
, the environment will be reconfigured.
This can be useful if you find the environment to be in an inconsistent state, or need/want to free up resources.
Usage
Options
--dependants-first
boolean
Delete services 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 delete environment service-a,service-b --dependants-first. When this flag is not used, all services in the project are deleted simultaneously.
Outputs
garden delete service
Deletes running services.
Deletes (i.e. un-deploys) the specified services. Deletes all services in the project if no arguments are provided. Note that this command does not take into account any services depending on the deleted service/services, and might therefore leave the project in an unstable state. Running garden deploy
will re-deploy any missing services.
Examples:
Usage
Arguments
services
No
The name(s) of the service(s) to delete. Use comma as a separator to specify multiple services.
Options
--dependants-first
boolean
Delete services 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 delete environment service-a,service-b --dependants-first. When this flag is not used, all services in the project are deleted simultaneously.
--with-dependants
boolean
Also delete services that have service dependencies on one of the services specified as CLI arguments (recursively). When used, this option implies --dependants-first. Note: This option has no effect unless a list of service names is specified as CLI arguments (since then, every service in the project will be deleted).
Outputs
garden deploy
Deploy service(s) to your environment.
Deploys all or specified services, taking into account service dependency order. Also builds modules and dependencies if needed.
Optionally stays running and automatically re-builds and re-deploys services if their module source (or their dependencies' sources) change.
Examples:
Usage
Arguments
services
No
The name(s) of the service(s) to deploy (skip to deploy all services). Use comma as a separator to specify multiple services.
Options
--force
boolean
Force redeploy of service(s).
--force-build
boolean
Force rebuild of module(s).
--watch
-w
boolean
Watch for changes in module(s) and auto-deploy.
--dev-mode
--dev
array:string
The name(s) of the service(s) to deploy with dev mode enabled. Use comma as a separator to specify multiple services. Use * to deploy all services with dev mode enabled. When this option is used, the command is run in watch mode (i.e. implicitly sets the --watch/-w flag).
--hot-reload
--hot
array:string
The name(s) of the service(s) to deploy with hot reloading enabled. Use comma as a separator to specify multiple services. Use * to deploy all services with hot reloading enabled (ignores services belonging to modules that don't support or haven't configured hot reloading). When this option is used, the command is run in watch mode (i.e. implicitly sets the --watch/-w flag).
--local-mode
--local
array:string
[EXPERIMENTAL] The name(s) of the service(s) to be started locally with local mode enabled. Use comma as a separator to specify multiple services. Use * to deploy all services with local mode enabled. When this option is used, the command is run in persistent mode.
This always takes the precedence over the dev mode if there are any conflicts, i.e. if the same services are passed to both `--dev` and `--local` options.
--skip
array:string
The name(s) of services you'd like to skip when deploying.
--skip-dependencies
--nodeps
boolean
Deploy the specified services, but don't deploy any additional services that they depend on or run any tasks that they depend on. This option can only be used when a list of service names is passed as CLI arguments. This can be useful e.g. when your stack has already been deployed, and you want to deploy a subset of services in dev mode without redeploying any service dependencies that may have changed since you last deployed.
--forward
boolean
Create port forwards and leave process running without watching for changes. Ignored if --watch/-w flag is set or when in dev or hot-reload mode.
--skip-watch
boolean
[EXPERIMENTAL] If set to `false` while in dev-mode (i.e. the --dev-mode/--dev flag is used) then file syncing will still work but Garden will ignore changes to config files and services that are not in dev mode.
This can be a performance improvement for projects that have a large number of files and where only syncing is needed when in dev mode.
Note that this flag cannot used if hot reloading is enabled.
This behaviour will change in a future release in favour of a "smarter" watching mechanism.
Outputs
garden dev
Starts the garden development console.
The Garden dev console is a combination of the build
, deploy
and test
commands. It builds, deploys and tests all your modules and services, and re-builds, re-deploys and re-tests as you modify the code.
Examples:
Usage
Arguments
services
No
Specify which services to develop (defaults to all configured services).
Options
--force
boolean
Force redeploy of service(s).
--hot-reload
--hot
array:string
The name(s) of the service(s) to deploy with hot reloading enabled. Use comma as a separator to specify multiple services. Use * to deploy all services with hot reloading enabled (ignores services belonging to modules that don't support or haven't configured hot reloading).
--local-mode
--local
array:string
[EXPERIMENTAL] The name(s) of the service(s) to be started locally with local mode enabled. Use comma as a separator to specify multiple services. Use * to deploy all services with local mode enabled. When this option is used, the command is run in persistent mode.
This always takes the precedence over the dev mode if there are any conflicts, i.e. if the same services are passed to both `--dev` and `--local` options.
--skip-tests
boolean
Disable running the tests.
--test-names
--tn
array:string
Filter the tests to run by test name across all modules (leave unset to run all tests). Accepts glob patterns (e.g. integ* would run both 'integ' and 'integration').
--skip-watch
boolean
[EXPERIMENTAL] Watching is enabled by default but can be disabled by setting this flag to `false`.
If set to `false` then file syncing will still work but Garden will ignore changes to config files and services that are not in dev mode.
This can be a performance improvement for projects that have a large number of files and where only file syncing is needed when in dev mode.
Note that this flag cannot be used if hot reloading is enabled.
This flag will be removed in future release in favour of a "smarter" watching mechanism.
garden exec
Executes a command (such as an interactive shell) in a running service.
Finds an active container for a deployed service and executes the given command within the container. Supports interactive shells.
NOTE: This command may not be supported for all module types.
Examples:
Usage
Arguments
service
Yes
The service to exec the command in.
command
Yes
The command to run.
Options
--interactive
boolean
Set to false to skip interactive mode and just output the command result
Outputs
garden cloud secrets list
List secrets.
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
--filter-envs
array:string
Filter on environment. Use comma as a separator to filter on multiple environments. Accepts glob patterns."
--filter-user-ids
array:string
Filter on user ID. Use comma as a separator to filter on multiple user IDs. Accepts glob patterns.
--filter-names
array:string
Filter on secret name. Use comma as a separator to filter on multiple secret names. Accepts glob patterns.
garden cloud secrets create
Create secrets
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
secrets
No
The names and values of the secrets to create, separated by '='. Use comma as a separator to specify multiple secret name/value pairs. Note that you can also leave this empty and have Garden read the secrets from file.
Options
--scope-to-user-id
number
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
garden cloud secrets delete
Delete secrets.
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
ids
No
The IDs of the secrets to delete.
garden cloud users list
List users.
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
--filter-names
array:string
Filter on user name. Use comma as a separator to filter on multiple names. Accepts glob patterns.
--filter-groups
array:string
Filter on the groups the user belongs to. Use comma as a separator to filter on multiple groups. Accepts glob patterns.
garden cloud users create
Create users
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
users
No
The VCS usernames and the names of the users to create, separated by '='. Use comma as a separator to specify multiple VCS username/name pairs. Note that you can also leave this empty and have Garden read the users from file.
Options
--add-to-groups
array:string
Add the user to the group with the given ID. Use comma as a separator to add the user to multiple groups.
--from-file
path
garden cloud users delete
Delete users.
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
ids
No
The IDs of the users to delete.
garden cloud groups list
List groups.
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
--filter-names
array:string
Filter on group name. Use comma as a separator to filter on multiple names. Accepts glob patterns.
garden get graph
Outputs the dependency relationships specified in this project's garden.yml files.
Usage
garden get config
Outputs the full configuration for this project and environment.
Usage
Options
--exclude-disabled
boolean
Exclude disabled module, service, test, and task configs from output.
--resolve
full
partial
Choose level of resolution of config templates. Defaults to full. Specify --resolve=partial to avoid resolving providers.