Bash
type: "io.kestra.core.tasks.scripts.Bash"
Execute a Bash script, command or set of commands.
# Examples
Single bash command
id: "bash"
type: "io.kestra.core.tasks.scripts.Bash"
commands:
- echo "The current execution is : {{execution.id}}"
Bash command that generate file in storage accessible through outputs
id: "bash"
type: "io.kestra.core.tasks.scripts.Bash"
outputFiles:
- first
- second
commands:
- echo "1" >> {{ outputFiles.first }}
- echo "2" >> {{ outputFiles.second }}
Bash with some inputs files
id: "bash"
type: "io.kestra.core.tasks.scripts.Bash"
inputFiles:
script.sh: |
echo {{ workingDir }}
commands:
- /bin/bash script.sh
# Properties
# commands
- Type: array
- SubType: string
- Dynamic: ✔️
- Required: ✔️
- Min items:
1
The commands to run
Default command will be launched with /bin/sh -c "commands"
# dockerOptions
- Type: DockerOptions
- Dynamic: ❓
- Required: ❌
Docker options when using runner
DOCKER
# env
- Type: object
- SubType: string
- Dynamic: ✔️
- Required: ❌
Additional environnements variable to add for current process.
# exitOnFailed
- Type: boolean
- Dynamic: ❌
- Required: ✔️
- Default:
true
Exit if any non true return value
This tells bash that it should exit the script if any statement returns a non-true return value.
The benefit of using -e is that it prevents errors snowballing into serious issues when they could have been caught earlier.
# files
🔒 Deprecated
- Type: array
- SubType: string
- Dynamic: ✔️
- Required: ❌
The list of files that will be uploaded to internal storage,
use outputFiles
property instead
# inputFiles
- Type: object
- SubType: string
- Dynamic: ✔️
- Required: ❌
Input files are extra files supplied by user that make it simpler organize code.
Describe a files map that will be written and usable in execution context. In python execution context is in a temp folder, for bash scripts, you can reach files using a workingDir variable like 'source /myfile.sh'
# interpreter
- Type: string
- Dynamic: ❌
- Required: ✔️
- Default:
/bin/sh
- Min length:
1
Interpreter to used
# interpreterArgs
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
- Default:
[-c]
Interpreter args used
# outputFiles
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
Output file list that will be uploaded to internal storage
List of key that will generate temporary files.
On the command, just can use with special variable named outputFiles.key
.
If you add a files with ["first"]
, you can use the special vars echo 1 >> {[ outputFiles.first }}
and you used on others tasks using {{ outputs.task-id.files.first }}
# outputsFiles
🔒 Deprecated
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
Deprecated Output file
use outputFiles
# runner
Type: string
Dynamic: ❌
Required: ✔️
Default:
PROCESS
Possible Values:
PROCESS
DOCKER
Runner to use
# warningOnStdErr
- Type: boolean
- Dynamic: ❌
- Required: ✔️
- Default:
true
Use
WARNING
state if any stdErr is sent
# Outputs
# exitCode
- Type: integer
- Default:
0
The exit code of the whole execution
# files
🔒 Deprecated
- Type: object
- SubType: string
Deprecated output files
use outputFiles
# outputFiles
- Type: object
- SubType: string
The output files uri in Kestra internal storage
# stdErrLineCount
- Type: integer
- Default:
0
The standard error line count
# stdOutLineCount
- Type: integer
- Default:
0
The standard output line count
# vars
- Type: object
The value extract from output of the commands
# Definitions
# DockerOptions
# dockerConfig
- Type: string
- Dynamic: ✔️
- Required: ❌
Docker config file
Full file that can be used to configure private registries, ...
# dockerHost
- Type: string
- Dynamic: ✔️
- Required: ❌
- Default:
unix:///var/run/docker.sock
Docker api uri
# entryPoint
- Type: array
- SubType: string
- Dynamic: ✔️
- Required: ❌
Docker entrypoint to use
# extraHosts
- Type: array
- SubType: string
- Dynamic: ✔️
- Required: ❌
Docker extra host to use
# image
- Type: string
- Dynamic: ✔️
- Required: ✔️
- Min length:
1
Docker image to use
# networkMode
- Type: string
- Dynamic: ✔️
- Required: ❌
Docker network mode to use
# user
- Type: string
- Dynamic: ✔️
- Required: ❌
Docker user to use
# volumes
- Type: array
- SubType: string
- Dynamic: ✔️
- Required: ❌
List of volumes to mount
Must be a valid mount expression as string, example : /home/user:/app
Volumes mount are disabled by default for security reasons, you must enabled on server configuration with kestra.tasks.scripts.docker.volume-enabled
to true