基于shipit-deploy实现的多服务器自动化部署方案
为什么要自动化部署,我这里就不多赘述了。
基于shipit-deploy的自动化部署,可以实现以下效果
- 一键部署多台服务器。
- 一键回滚多台服务器。
- 本地操作,不需要登录服务器。
- 方便定制,方便扩展,实现自动化。
使用
1.下载安装
npm install --save-dev shipit-cli
npm install --save-dev shipit-deploy
2.与服务器建立信任关系
ssh-copy-id USER@REMOTE_HOST
3.配置
module.exports = function (shipit) {
require('shipit-deploy')(shipit);
require('shipit-pm2')(shipit);
require('shipit-cnpmjs')(shipit);
shipit.initConfig({
default: {
workspace: '/tmp/github-monitor',
deployTo: '/tmp/deploy_to', //服务器的目标路径
repositoryUrl: 'https://github.com/user/repo.git', //git仓库地址
ignores: ['.git', 'node_modules'], //排除的文件
keepReleases: 2, //发布保留的版本数量
deleteOnRollback: false,
key: '/path/to/key',
shallowClone: true,
cnpm: {
remote: false
}
},
dev: { //开发服务器部署
servers: ['user@devServer1', 'user@devServer1'],
branch: 'dev' //需要发布的git分支,
pm2: {
json: 'pm2-dev-app.json' //开发环境的pm2启动配置
}
},
prod: { //生产服务器部署
servers: ['user@prodServer1', 'user@prodServer2'],
branch: 'master' //需要发布的git分支,
pm2: {
json: 'pm2-prod-app.json' //生产jam环境的pm2启动配置
}
}
});
};
pm2-prod-app.json 示例:
{
"apps": [
{
"name": "frontend_name",
"script": "app.js",
"args": "--env=production",
"instances": 1,
"cwd": "/tmp/production_path/current",
"env": {
"NODE_ENV": "production",
"PORT": "9001"
}
}
]
}
当然,我们也可以使用以下脚本来启动项目
pm2 startOrRestart pm2-prod-app.json
发布
shipit dev deploy //开发环境发布
shipit dev rollback //回滚
shipit prod deploy //生产环境发布
shipit prod rollback //回滚
微信公众号
