TCP server and deployment system that flips from one deployment to another.
TCP server and deployment system that flips from one deployment to another.
// server.js
var flipover = require('../')
, childport = require('childport')
;
function run (deploy, cb) {
function finish (e) {
cb(e, p)
}
var p = childport.cp(deploy.port, finish).spawn('node', [__dirname+'/child.js'])
deploy.outputProcess(p)
}
function test (deploy, cb) {
request('http://localhost:'+deploy.port+'/test', function (e, resp, body) {
if (e) return cb(e)
if (resp.statusCode !== 200) return cb(new Error('statusCode is not 200', resp.statusCode))
})
}
flipover(run, test).listen(8080, 7171)
var http = require('http')
, childport = require('childport')
;
childport.listen(http.createServer(function (req, resp) {
resp.statusCode = 200
resp.end('ok')
}))
Port to listen on. Callbacks for new deployments must not be resolved until the server is listening on this port.
flipover(function (deploy, cb) {}, [function test (deploy, cb) {}])
Returns a flipover server.
Requires a function for you to write your deployment code. This function takes two arguments: a Deploy
instance and a callback which takes two arguments: error
and an instance of child_process.ChildProcess
which will be monitored and killed if need be.
Optionally you can also pass a test function which is used to validate the server is working and test it periodically.
FlipOver.listen(serverPort, adminPort, cb)
Listen.