|
var path = require('path'); |
|
|
|
function getServiceDirectory(env) { |
|
return `/services/${env}/example_app`; |
|
} |
|
|
|
module.exports = function(shipit) { |
|
'use strict'; |
|
require('shipit-deploy')(shipit); |
|
|
|
shipit.initConfig({ |
|
default: { |
|
workspace: './build', //Local working directory |
|
deployTo: '/tmp/deploy_to/example_app', //Remote working directory |
|
repositoryUrl: '[email protected]:example/example.com.git', //This can be any Git repository |
|
ignores: ['.git', 'node_modules', 'test'], |
|
rsync: ['--del'], |
|
keepReleases: 2, |
|
key: '/home/<user>/.ssh/id_rsa' |
|
}, |
|
dev: { |
|
servers: 'deploy@<remote>' |
|
}, |
|
stable: { |
|
servers: 'deploy@<remote>' |
|
}, |
|
demo: { |
|
servers: 'deploy@<remote>' |
|
} |
|
}); |
|
|
|
shipit.task('pwd', () => { |
|
return shipit.remote('pwd'); |
|
}); |
|
|
|
shipit.on('deployed', () => { |
|
shipit.start('stop', 'copy','npm', 'start') |
|
}); |
|
|
|
shipit.blTask('stop', () => { |
|
return shipit.remote(`pm2 stop example_app_${shipit.environment} -s`).catch(err => { |
|
console.log('Service does not exist'); |
|
return Promise.resolve(); |
|
}); |
|
}); |
|
|
|
shipit.blTask('copy', () => { |
|
let serviceDir = getServiceDirectory(shipit.environment); |
|
|
|
var currRelease = path.join(shipit.releasesPath, shipit.releaseDirname); |
|
return shipit.remote(`cp -R ${currRelease} ${serviceDir}`) |
|
}); |
|
|
|
shipit.blTask('npm', () => { |
|
let serviceDir = getServiceDirectory(shipit.environment); |
|
|
|
return shipit.remote(`npm --production --prefix ${serviceDir} install ${serviceDir}`) |
|
}); |
|
|
|
shipit.blTask('start', () => { |
|
let serviceDir = getServiceDirectory(shipit.environment); |
|
|
|
return shipit.remote(`pm2 start ${serviceDir}/server.js --name='example_app_${shipit.environment}' -i 1`) |
|
}); |
|
}; |