update
This commit is contained in:
parent
e06f988828
commit
2193936275
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@dllcn/auto-deploy",
|
"name": "@dllcn/auto-deploy",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"description": "自动部署脚本",
|
"description": "自动部署脚本",
|
||||||
"main": "upload.js",
|
"main": "upload.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
99
upload.js
99
upload.js
|
@ -26,21 +26,25 @@ let config; // 用于保存 inquirer 命令行交互后选择正式|测试版的
|
||||||
//logs
|
//logs
|
||||||
const defaultLog = log => console.log(chalk.blue(`---------------- ${log} ----------------`));
|
const defaultLog = log => console.log(chalk.blue(`---------------- ${log} ----------------`));
|
||||||
const errorLog = log => console.log(chalk.red(`---------------- ${log} ----------------`));
|
const errorLog = log => console.log(chalk.red(`---------------- ${log} ----------------`));
|
||||||
const successLog = log => console.log(chalk.green(`---------------- ${log} ----------------`));
|
const successLog = log => console.log(chalk.green(`---------------------- OK ----------------------`));
|
||||||
|
const endLog = log => console.log(chalk.green(`--------------- ${log} ---------------`));
|
||||||
|
|
||||||
//文件夹目录
|
//文件夹目录
|
||||||
const distZipPath = path.resolve(__dirname, `${pathHierarchy}../smx-bundle.tar.gz`); //打包后地址(smx-bundle.tar.gz是文件名,不需要更改, 主要在config中配置 PATH 即可)
|
const distZipPath = path.resolve(__dirname, `${pathHierarchy}../smx-bundle.tar.gz`); //打包后地址(smx-bundle.tar.gz是文件名,不需要更改, 主要在config中配置 PATH 即可)
|
||||||
|
|
||||||
|
|
||||||
//项目打包代码 npm run build
|
/**
|
||||||
|
* 项目打包
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
const compileDist = async () => {
|
const compileDist = async () => {
|
||||||
const loading = ora(defaultLog('项目开始打包')).start()
|
const loading = ora(defaultLog('正在进行项目打包')).start()
|
||||||
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
||||||
shell.cd(path.resolve(__dirname, pathHierarchy))
|
shell.cd(path.resolve(__dirname, pathHierarchy))
|
||||||
const res = await shell.exec(config.BUILD_SHELL) //执行shell 打包命令
|
const res = await shell.exec(config.BUILD_SHELL) //执行shell 打包命令
|
||||||
loading.stop()
|
loading.stop()
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
successLog('项目打包成功!')
|
successLog();
|
||||||
} else {
|
} else {
|
||||||
errorLog('项目打包失败, 请重试!')
|
errorLog('项目打包失败, 请重试!')
|
||||||
process.exit() //退出流程
|
process.exit() //退出流程
|
||||||
|
@ -53,18 +57,20 @@ const compileDist = async () => {
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
const zipDist = async () => {
|
const zipDist = async () => {
|
||||||
const loading = ora(defaultLog('正在压缩代码')).start();
|
const loading = ora(defaultLog('正在进行代码压缩')).start();
|
||||||
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
||||||
try {
|
try {
|
||||||
const distDir = path.resolve(__dirname, `${pathHierarchy}${config.OUTPUT_PATH}`);
|
const distDir = path.resolve(__dirname, `${pathHierarchy}${config.OUTPUT_PATH}`);
|
||||||
await zipFile.tgz.compressDir(distDir, distZipPath)
|
await zipFile.tgz.compressDir(distDir, distZipPath);
|
||||||
successLog('压缩成功!');
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
loading.stop();
|
||||||
errorLog(error);
|
errorLog(error);
|
||||||
errorLog('压缩失败, 退出程序!');
|
errorLog('压缩失败, 退出程序!');
|
||||||
process.exit(); //退出流程
|
process.exit(); //退出流程
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.stop();
|
loading.stop();
|
||||||
|
successLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,13 +95,15 @@ const connectSSH = async () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await SSH.connect(opt);
|
await SSH.connect(opt);
|
||||||
successLog('SSH连接成功!');
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
loading.stop();
|
||||||
errorLog(error);
|
errorLog(error);
|
||||||
errorLog('SSH连接失败,请检查密码或者私钥以及网络状态!')
|
errorLog('SSH连接失败,请检查密码或者私钥以及网络状态!')
|
||||||
process.exit(); //退出流程
|
process.exit(); //退出流程
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.stop();
|
loading.stop();
|
||||||
|
successLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,28 +112,43 @@ const connectSSH = async () => {
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
const clearOldFile = async () => {
|
const clearOldFile = async () => {
|
||||||
|
const loading = ora(defaultLog('正在进行部署准备')).start();
|
||||||
|
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await runCommand(`mkdir ${config.NAME}`);
|
await runCommand(`mkdir ${config.NAME}`);
|
||||||
} catch (e) {
|
} catch (e) {}
|
||||||
// console.log(`检索到服务器存在${config.NAME}文件夹`);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (config.BACKUP) {
|
if (config.BACKUP) {
|
||||||
const time = new Date().getTime();
|
|
||||||
try {
|
try {
|
||||||
|
loading.text = '正在进行备份';
|
||||||
|
const time = new Date().getTime();
|
||||||
await runCommand(`tar -zcvf ${config.NAME}_${time}.tar.gz ${config.NAME}`);
|
await runCommand(`tar -zcvf ${config.NAME}_${time}.tar.gz ${config.NAME}`);
|
||||||
} catch {
|
console.log('-ok!')
|
||||||
console.log('备份失败');
|
} catch (error) {
|
||||||
|
errorLog(error);
|
||||||
|
errorLog('备份失败!')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
loading.text = '正在回收部署目录';
|
||||||
const commands = [`cd ${config.NAME} && ls`, `cd ${config.NAME} && rm -rf *`];
|
const commands = [`cd ${config.NAME} && ls`, `cd ${config.NAME} && rm -rf *`];
|
||||||
await Promise.all(commands.map(async (it) => {
|
await Promise.all(commands.map(async (it) => {
|
||||||
return await runCommand(it);
|
return await runCommand(it);
|
||||||
}));
|
}));
|
||||||
|
console.log('-ok!')
|
||||||
|
} catch (e) {
|
||||||
|
loading.stop();
|
||||||
|
errorLog(error);
|
||||||
|
errorLog('回收部署目录失败!');
|
||||||
|
process.exit(); //退出流程
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
loading.stop();
|
||||||
|
successLog()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -134,16 +157,25 @@ const clearOldFile = async () => {
|
||||||
*/
|
*/
|
||||||
const uploadFiles = async () => {
|
const uploadFiles = async () => {
|
||||||
// 上传文件
|
// 上传文件
|
||||||
const loading = ora(defaultLog('准备上传文件')).start();
|
const loading = ora(defaultLog('正在进行部署')).start();
|
||||||
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
||||||
try {
|
try {
|
||||||
|
loading.text = '正在进行代码上传';
|
||||||
await SSH.putFiles([{
|
await SSH.putFiles([{
|
||||||
local: distZipPath,
|
local: distZipPath,
|
||||||
remote: `${config.PATH}/${config.NAME}/smx-bundle.tar.gz`
|
remote: `${config.PATH}/${config.NAME}/smx-bundle.tar.gz`
|
||||||
}]); //local 本地 ; remote 服务器 ;
|
}]); //local 本地 ; remote 服务器 ;
|
||||||
successLog('上传成功!');
|
console.log('-ok!')
|
||||||
loading.text = '正在解压文件';
|
} catch (error) {
|
||||||
|
loading.stop();
|
||||||
|
errorLog(error);
|
||||||
|
errorLog('上传失败!');
|
||||||
|
process.exit(); //退出流程
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
loading.text = '正在解压整理部署文件';
|
||||||
await runCommand(`cd ${config.NAME} && tar -zxvf smx-bundle.tar.gz`); //解压
|
await runCommand(`cd ${config.NAME} && tar -zxvf smx-bundle.tar.gz`); //解压
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,6 +185,14 @@ const uploadFiles = async () => {
|
||||||
await runCommand(`mv -f ${config.PATH}/${config.NAME}/${config.OLD_NAME}/* ${config.PATH}/${config.NAME}`)
|
await runCommand(`mv -f ${config.PATH}/${config.NAME}/${config.OLD_NAME}/* ${config.PATH}/${config.NAME}`)
|
||||||
await runCommand(`rm -rf ${config.PATH}/${config.NAME}/${config.OLD_NAME}`) //移出后删除 dist 文件夹
|
await runCommand(`rm -rf ${config.PATH}/${config.NAME}/${config.OLD_NAME}`) //移出后删除 dist 文件夹
|
||||||
|
|
||||||
|
console.log('-ok!')
|
||||||
|
} catch (e) {
|
||||||
|
loading.stop();
|
||||||
|
errorLog(error);
|
||||||
|
errorLog('解压整理出现异常!');
|
||||||
|
process.exit(); //退出流程
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 后续扩展命令
|
// 后续扩展命令
|
||||||
if (config.EXTENDS) {
|
if (config.EXTENDS) {
|
||||||
|
@ -162,17 +202,15 @@ const uploadFiles = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
SSH.dispose(); //断开连接
|
SSH.dispose(); //断开连接
|
||||||
} catch (error) {
|
|
||||||
errorLog(error);
|
|
||||||
errorLog('上传失败!');
|
|
||||||
process.exit(); //退出流程
|
|
||||||
}
|
|
||||||
loading.stop();
|
loading.stop();
|
||||||
|
successLog()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 删除本地上传后的打包文件
|
// 删除本地上传后的打包文件
|
||||||
const deleteFile = async () => {
|
const deleteFile = async () => {
|
||||||
|
const loading = ora(defaultLog('正在进行后续处理')).start();
|
||||||
|
loading.spinner = spinner_style[config.LOADINGSTYLE || 'arrow4']
|
||||||
delPath = distZipPath;
|
delPath = distZipPath;
|
||||||
try {
|
try {
|
||||||
/**
|
/**
|
||||||
|
@ -183,9 +221,10 @@ const deleteFile = async () => {
|
||||||
} else {
|
} else {
|
||||||
console.log('inexistence path:', delPath);
|
console.log('inexistence path:', delPath);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {}
|
||||||
console.log('删除本地打包文件失败', error);
|
|
||||||
}
|
loading.stop();
|
||||||
|
successLog()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,10 +256,10 @@ const uploadZipBySSH = async () => {
|
||||||
|
|
||||||
//----------------------------------------发布程序---------------------------------------------------------//
|
//----------------------------------------发布程序---------------------------------------------------------//
|
||||||
const runUploadTask = async () => {
|
const runUploadTask = async () => {
|
||||||
console.log(chalk.yellow(`---------> 欢迎使用自动部署工具 <---------`));
|
console.log(chalk.yellow(`------------> 欢迎使用自动部署工具 <------------`));
|
||||||
|
|
||||||
//打包
|
//打包
|
||||||
if(config.BUILD_SHELL){
|
if (config.BUILD_SHELL) {
|
||||||
await compileDist()
|
await compileDist()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,11 +271,11 @@ const runUploadTask = async () => {
|
||||||
|
|
||||||
//删除本地打包文件
|
//删除本地打包文件
|
||||||
|
|
||||||
if(config.DELETE_LOCAL_PACKAGE){
|
if (config.DELETE_LOCAL_PACKAGE) {
|
||||||
await deleteFile();
|
await deleteFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
successLog('大吉大利, 部署成功!');
|
endLog('大吉大利, 部署成功');
|
||||||
process.exit();
|
process.exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue