run-forrest-run
YAML config based script runner.
run-forrest-run should be 100% compatible with scriptz.
Installation
npm i -g run-forrest-run
Configuration
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.
Flow configuration
# Required values name: string # Label flow: string # Type of flow 'sequential' or 'parallel' steps: Array<Step> # Step definitions
Step configuration
# 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
Examples
Example 1
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
Example 2
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