Command line tool allows you to execute commands on remote server(s) or locally. Useful for deployment, monitoring and other tasks.
npm install roco -g
roco deploy:setup # prepare deploy (create directories)
roco deploy # update code and restart server
Use one of three ways for configuring your app: package.json, roco.coffee or ENV vars
roco looking for package.json in working directory and set these variables:
pkg.nameasapplicationpkg.repository.nameasrepositorypkg.repository.typeasscm
roco looking for Roco.coffee file in /etc/roco.coffee, ~/.roco.coffee, ./Roco.coffee, ./config/Roco.coffee paths
This files can extend behavior of roco and configure variables. Checkout examples to learn how to use it
HOSTS- comma separated list of hostsAPP- name of application
namespace'deploy', -># show status of running applicationtask'status', ->run"sudo status #{roco.application}"namespace'git', -># setup remote private repotask'remote', ->app=roco.applicationrun""" mkdir #{app}.git; cd #{app}.git; git --bare init; true""", (res) ->localRun""" git remote add origin #{res[0].host}:#{app}.git; git push -u origin master"""# some tasks for monitoring server statenamespace'i', ->task'disk', (done) ->run'df -h', done
task'top', (done) ->run'top -b -n 1 | head -n 12', done
task'who', (done) ->run'who', done
task'node', (done) ->run'ps -eo args | grep node | grep -v grep', done
task'free', (done) ->run'free', done
task'all', (done) ->sequence'top', 'free', 'disk', 'node', done
# display last 100 lines of application logtask'log', ->run"tail -n 100 #{roco.sharedPath}/log/#{roco.env}.log"Current deploy script allows you deploy upstart-controlled applications out of box, just run
roco deploy:setup:upstart
to setup upstart script and create dirs, if you use another solution for node daemon management feel free to rewrite start/stop/restart scripts:
namespace'deploy', ->task'start', (done) ->run"cd #{roco.currentPath}; forever start server.js"task'stop', (done) ->run"cd #{roco.currentPath}; forever stop"~/.roco.coffee:
set'nodever', '0.8.10'namespace'node', ->task'update', (done) ->sequence'download', 'unpack', 'compile', 'install', done
task'rebuild', (done) ->sequence'unpack', 'compile', 'install', done
task'download', (done) ->run"cd /tmp && wget http://nodejs.org/dist/v#{roco.nodever}/node-v#{roco.nodever}.tar.gz", done
task'unpack', (done) ->run"cd /tmp && tar xfv node-v#{roco.nodever}.tar.gz", done
task'compile', (done) ->run"cd /tmp/node-v#{roco.nodever} && ./configure && make", done
task'install', (done) ->run"cd /tmp/node-v#{roco.nodever} && sudo make install", doneExample: update nodejs on localhost and railwayjs.com hosts
HOSTS=localhost,railwayjs.com roco node:update
MIT
