$ node roadie.js --init # write config.json $ node roadie.js --validate # check it, run nothing $ node roadie.js --list # every project and its steps $ node roadie.js # pick a project, ship it
Every step numbered and timed. The first failure stops the run; a banner and the terminal bell say how it went.
In the config
{ "type": "local", "run": "./gradlew assemble" }
{ "type": "transfer", "from": "app.jar", "to": "/srv/app/" }
{ "type": "remote", "run": "systemctl restart app" }
{ "type": "confirm", "prompt": "Stopped? Enter." }
"cwd": {
"win": "C:\\projects\\backend-api",
"default": "~/projects/backend-api"
}
# also run, from, identityFile and a step's cwd
# keys: mac, win, linux, default (or *)
local runs on this machine, transfer copies with scp, remote runs over ssh, confirm waits for Enter. A value can differ per OS, so one config works on a Mac and a PC.
Safety
Checked first
Counts every project and step, and says which ones deploy over SSH and which leave a note. A config error is reported here, at load time, not halfway through a deploy.
✓ Config OK (config.json) 3 projects, 22 steps total steps: 12 local, 4 transfer, 4 remote, 2 confirm 2 project(s) with ssh, 2 with notify
Get roadie
Options take the = form: --project=backend-api. Password authentication is not supported, on purpose.