YAML config based script runner.
run-forrest-run should be 100% compatible with scriptz.
npm i -g run-forrest-run
The configuration exists of flows and steps. We start of by defining a couple of options and the start flow.
options:
retry_count: number # (default: 0) Retry count if exit code > 0
env: Object # (default: {}) Additional environment variables
output_folder: string # (default: '') A folder for your logs
start:
...
The base options that are defined will be used for each step. All the environment variables from the base options will be used, if it is set. If it is also defined on the step level, then the object will be merged.
# Required values
name: string # Label
flow: string # Type of flow 'sequential' or 'parallel'
steps: Array<Step> # Step definitions
# Required values
name: string # Label used to keep track of script
script: string # Script location relative to where scriptz is being run
output_file: string # Where to write logs, can be prefixed with an output_folder
arguments: Array<String> # (default: []) Additional arguments
cwd: string # (default: process.cwd()) CWD of the script
env: Object # (default: {}) Additional environment variables
retry_count: number # (default: 0) Retry count if exit code > 0
Run 2 commands in parralel.
# example1.yaml
start:
name: Main
flow: parallel
steps:
- name: File listing
script: ls
arguments:
- -lrt
- name: Working directory
script: pwd
Run this config:
$ run-forrest-run -c example1.yaml -v
Run 3 steps in sequence, the steps itself run some commands in parralel.
# example2.yaml
start:
name: Main
flow: sequential
steps:
# the steps details are defined
# at the bottom of this file
- $ref: "#/cleanup"
- $ref: "#/npm-install"
- $ref: "#/clone"
cleanup:
name: cleanup log directory
script: ./cleanup.sh
npm-install:
name: npm install
flow: parallel
steps:
- name: install s3-zip
script: npm
arguments:
- install
- s3-zip
- name: install s3-files
script: npm
arguments:
- install
- s3-files
- name: install rotan
script: npm
arguments:
- install
- rotan
clone:
name: clone
flow: parallel
steps:
- name: git clone run-forrest-run
script: git
arguments:
- clone
- git@github.com:orangewise/run-forrest-run.git
output_file: log/git-clone.log
- name: git clone s3-zip
script: git
arguments:
- clone
- git@github.com:orangewise/s3-zip.git
output_file: log/s3-zip.log
Run this config:
$ run-forrest-run -c example2.yaml -v