scp2自动部署
2024-09-05 04:06:32
安装scp2
npm install scp2 --save-dev
配置服务器文件
项目根目录创建文件 .env.dev 文件 (测试环境变量)和创建 .env.prod 文件 (生产环境变量)
VUE_APP_SERVER_ID=0
VUE_APP_SERVER_ID=1
创建scp2自动化部署脚本
项目根目录创建 deploy/index.js 文件
// deploy/index.js里面
const scpClient = require('scp2');
const ora = require('ora');
const chalk = require('chalk');
const server = require('./products');
const spinner = ora(
'正在发布到' +
(process.env.NODE_ENV === 'prod' ? '生产' : '测试') +
'服务器...'
);
var Client = require('ssh2').Client;
var conn = new Client();
conn
.on('ready', function() {
// rm 删除dist文件,\n 是换行 换行执行 重启nginx命令 我这里是用docker重启nginx
conn.exec('rm -rf /mdm/nginx/dist\ndocker restart nginx', function(
err,
stream
) {
if (err) throw err;
stream
.on('close', function(code, signal) {
// 在执行shell命令后,把开始上传部署项目代码放到这里面
spinner.start();
scpClient.scp(
'./dist',
{
host: server.host,
port: server.port,
username: server.username,
password: server.password,
path: server.path
},
function(err) {
spinner.stop();
if (err) {
console.log(chalk.red('发布失败.\n'));
throw err;
} else {
console.log(
chalk.green(
'Success! 成功发布到' +
(process.env.NODE_ENV === 'prod'
? '生产'
: '测试') +
'服务器! \n'
)
);
}
}
);
conn.end();
})
.on('data', function(data) {
console.log('STDOUT: ' + data);
})
.stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
});
})
.connect({
host: server.host,
port: server.port,
username: server.username,
password: server.password
//privateKey: require('fs').readFileSync('/home/admin/.ssh/id_dsa')
});
package.json 配置 scripts 命令, 定义名称为 “deploy”
"scripts": {
"serve": "vue-cli-service serve --mode dev",
"build": "vue-cli-service build --mode prod",
"deploy:dev": "npm run build && cross-env NODE_ENV=dev node ./deploy",
"deploy:prod": "npm run build && cross-env NODE_ENV=prod node ./deploy",
},
最新文章
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
- linux上java路径设置
- CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
- Centos6.4 mysql安装与配置
- hdu 1042 N!(高精度乘法 + 缩进)
- C语言基础学习运算符-赋值运算符
- js返回当前时间的毫秒数
- OC语法4——自定义构造方法,description方法
- SQLite for C#
- office2010安装出错,windows installer服务不能更新一个或多个受保护的windows文件
- 提高PHP编程效率的方法
- U盘发现器
- JavaScript网页全屏API
- [ExtJS5学习笔记]第十二节 Extjs5开发遇到的问题列表记录
- Lua 基础之Weak Table(5)
- Python学习 ——正则表达式
- python ---16 初识面向对象
- 【译】第15节---数据注解-StringLength