sh脚本实现一键部署
须知
本文针对VUE项目,后面会出Java和next项目的一键部署,也有可能出一套从环境搭建到一键部署的教程。前提条件:服务器装了Git,node,node装有cnpm(因为有些资源国内npm install下不下来)
node装cnpm命令npm install -g cnpm --registry=https://registry.npm.taobao.org
快捷命令软链sudo ln -s /usr/local/node/v14.16.0/bin/cnpm /usr/local/bin/cnpm
其中这一段命令是你自己的包路径,执行完上一局之后会打印,在箭头左边/usr/local/node/v14.16.0/bin/cnpm
脚本
#! /bin/bash
dist="/opt/manage/dist/*"
jobdir="/opt/manage"
product="/opt/server/managevue"
cd ${jobdir}
d=`date "+%Y-%m-%d %H:%M:%S"`
st=`date -d "${d}" +%s`
echo "--------------------当前日期:${d}--------------------"
echo "--------------------拉取项目--------------------"
git pull origin dev
echo "--------------------拉取项目完成...--------------------"
echo "--------------------源码目录:${dist}"
echo "--------------------生产目录:${product}"
#编译项目
d=`date "+%Y-%m-%d %H:%M:%S"`
echo "--------------------开始编译项目-${d}----------------------"
npm run build --scripts-prepend-node-path=auto
d=`date "+%Y-%m-%d %H:%M:%S"`
echo "--------------------编译项目完成-${d}----------------------"
#清空发布目录的文件
echo "--------------------开始清除发布目录文件--------------------"
cd ${product}
for file in ${product}/*; do
fileName=${file#*.}
echo "-------------------->删除:${fileName}"
rm -rf ${fileName}
done
echo "--------------------清除发布目录文件完成--------------------"
echo "--------------------复制文件--------------------"
#复制编译好的文件到发布目录
cp -rf ${dist} ${product}
d=`date "+%Y-%m-%d %H:%M:%S"`
##计算耗时
ed=`date -d "${d}" +%s`
tt=$[ed-st]
fen=0
second=${tt}
if((tt>60));then
fen=$[tt/60]
second=$((tt%60))
fi
echo "--------------------完成:${d}--------------------"
echo "--------------------耗时:${fen}分${second}秒--------------------"
执行过程
- git与远程关联,拉取代码并执行npm install和cnpm install
- 上传脚本并在脚本所在位置执行
sudo sed -i 's/\r//' 文件名.sh
(含义:Unix体系里,每行结尾只有“<换行>”,即“\n”;Windows体系里面,每行结尾是“<换行><回 车>”,即“\n\r”;上面的脚本复制到linux里面执行会被自动换行导致错误) chmod -R 777 文件名.sh
(含义:./无法执行,授予读写权限)- 加软链全局执行
sudo ln -s /opt/manage/文件名.sh /usr/local/bin/runvue
(前半段写自己路径) - 好了,全局runvue便可以自动拉代码打包发布了,注意脚本中的
git pull origin dev
按自己的分支调整