Exec

A simple module for executing commands in your shell. This can be a useful escape hatch if no other module type fits your needs, and you just need to execute something (as opposed to deploy it, track its status etc.).

Below is the schema reference. For an introduction to configuring Garden modules, please look at our Configuration guide. The first section lists and describes the available schema keys. The second section contains the complete YAML schema.

exec modules also export values that are available in template strings under ${modules.<module-name>.outputs}. See the Outputs section below for details.

Configuration keys

apiVersion

The schema version of this module's config (currently not used).

Type

Required

Allowed Values

Default

string

Yes

"garden.io/v0"

"garden.io/v0"

kind

Type

Required

Allowed Values

Default

string

Yes

"Module"

"Module"

type

The type of this module.

Type

Required

string

Yes

Example:

type: "container"

name

The name of this module.

Type

Required

string

Yes

Example:

name: "my-sweet-module"

description

Type

Required

string

No

include

Specify a list of POSIX-style paths or globs that should be regarded as the source files for this module. Files that do not match these paths or globs are excluded when computing the version of the module, when responding to filesystem watch events, and when staging builds.

Note that you can also exclude files using the exclude field or by placing .gardenignore files in your source tree, which use the same format as .gitignore files. See the Configuration Files guide for details.

Also note that specifying an empty list here means no sources should be included.

Type

Required

array[string]

No

Example:

include:
- Dockerfile
- my-app.js

exclude

Specify a list of POSIX-style paths or glob patterns that should be excluded from the module. Files that match these paths or globs are excluded when computing the version of the module, when responding to filesystem watch events, and when staging builds.

Note that you can also explicitly include files using the include field. If you also specify the include field, the files/patterns specified here are filtered from the files matched by include. See the Configuration Files guidefor details.

Type

Required

array[string]

No

Example:

exclude:
- tmp/**/*
- '*.log'

repositoryUrl

A remote repository URL. Currently only supports git servers. Must contain a hash suffix pointing to a specific branch or tag, with the format: #

Garden will import the repository source code into this module, but read the module's config from the local garden.yml file.

Type

Required

string

No

Example:

repositoryUrl: "git+https://github.com/org/repo.git#v2.0"

allowPublish

When false, disables pushing this module to remote registries.

Type

Required

Default

boolean

No

true

build

Specify how to build the module. Note that plugins may define additional keys on this object.

Type

Required

Default

object

No

{"dependencies":[]}

build.dependencies[]

build > dependencies

A list of modules that must be built before this module is built.

Type

Required

Default

array[object]

No

[]

Example:

build:
...
dependencies:
- name: some-other-module-name

build.dependencies[].name

build > dependencies > name

Module name to build ahead of this module.

Type

Required

string

Yes

build.dependencies[].copy[]

build > dependencies > copy

Specify one or more files or directories to copy from the built dependency to this module.

Type

Required

Default

array[object]

No

[]

build.dependencies[].copy[].source

build > dependencies > copy > source

POSIX-style path or filename of the directory or file(s) to copy to the target.

Type

Required

string

Yes

build.dependencies[].copy[].target

build > dependencies > copy > target

POSIX-style path or filename to copy the directory or file(s).

Type

Required

Default

string

No

"<same as source path>"

build.command[]

build > command

The command to run inside the module's directory to perform the build.

Type

Required

Default

array[string]

No

[]

Example:

build:
...
command:
- npm
- run
- build

env

Key/value map of environment variables. Keys must be valid POSIX environment variable names (must not start with GARDEN) and values must be primitives.

Type

Required

Default

object

No

{}

tasks

A list of tasks that can be run in this module.

Type

Required

Default

array[object]

No

[]

tasks[].name

tasks > name

The name of the task.

Type

Required

string

Yes

tasks[].description

tasks > description

A description of the task.

Type

Required

string

No

tasks[].dependencies[]

tasks > dependencies

The names of any tasks that must be executed, and the names of any services that must be running, before this task is executed.

Type

Required

Default

array[string]

No

[]

tasks[].timeout

tasks > timeout

Maximum duration (in seconds) of the task's execution.

Type

Required

Default

number

No

null

tasks[].command[]

tasks > command

The command to run in the module build context.

Type

Required

array[string]

No

tests

A list of tests to run in the module.

Type

Required

Default

array[object]

No

[]

tests[].name

tests > name

The name of the test.

Type

Required

string

Yes

tests[].dependencies[]

tests > dependencies

The names of any services that must be running, and the names of any tasks that must be executed, before the test is run.

Type

Required

Default

array[string]

No

[]

tests[].timeout

tests > timeout

Maximum duration (in seconds) of the test run.

Type

Required

Default

number

No

null

tests[].command[]

tests > command

The command to run in the module build context in order to test it.

Type

Required

array[string]

No

tests[].env

tests > env

Key/value map of environment variables. Keys must be valid POSIX environment variable names (must not start with GARDEN) and values must be primitives.

Type

Required

Default

object

No

{}

Complete YAML schema

apiVersion: garden.io/v0
kind: Module
type:
name:
description:
include:
exclude:
repositoryUrl:
allowPublish: true
build:
dependencies:
- name:
copy:
- source:
target: <same as source path>
command: []
env: {}
tasks:
- name:
description:
dependencies: []
timeout: null
command:
tests:
- name:
dependencies: []
timeout: null
command:
env: {}

Outputs

The following keys are available via the ${modules.<module-name>} template string key for exec modules.

modules.<module-name>.buildPath

The build path of the module.

Type

Required

string

Yes

Example:

buildPath: "/home/me/code/my-project/.garden/build/my-module"

modules.<module-name>.path

The local path of the module.

Type

Required

string

Yes

Example:

path: "/home/me/code/my-project/my-module"

modules.<module-name>.version

The current version of the module.

Type

Required

string

Yes

Example:

version: "v-17ad4cb3fd"

modules.<module-name>.outputs

The outputs defined by the module.

Type

Required

object

Yes