部署脚本
shopt -s expand_aliases # 启用别名
echo '发布到hw.rstone.com.cn'
SERVER='test@hw.rstone.com.cn'
#ssh
alias SSHEXEC='ssh -i /Users/test/.ssh/id_rsa.hw test@hw.rstone.com.cn'
alias SSHEXECSUDO='ssh -i /Users/test/.ssh/id_rsa.hw test@hw.rstone.com.cn sudo'
alias SSHSCP='scp -i /Users/test/.ssh/id_rsa.hw '
#!/bin/bash
#脚本在执行时遇到错误立即退出
set -e
#开启命令打印用于调试
#set -x
#获取本执行文件的路径
currentpath=$(cd "$(dirname "$0")" && pwd)
#加载配置文件
source ${currentpath}/config
echo "将发布.out/目录下面的内容到服务器的docker镜像rstone-web-nuxt3:"
read -p "是否发布[y/n]:" yn
if [ "${yn}" != "y" ]; then
#退出发布
echo "退出发布"
exit 1
fi
echo "开始发布..."
TMPPATH=${currentpath}/tmp
#发布
echo "删除发布临时文件:${TMPPATH}/output.zip"
rm -rf ${TMPPATH}/output.zip
echo "压缩./out目录下面的内容..."
if [ ! -d $TMPPATH ]; then
mkdir -p ${TMPPATH}
fi
zip -r $TMPPATH/output.zip ./.output
echo "上传${TMPPATH}/output.zip 到服务器..."
SERTMPPATH="/tmp/rstone-web-nuxt3"
echo "删除服务器上临时目录:${SERTMPPATH}"
SSHEXEC "yes | sudo rm -rf ${SERTMPPATH}"
echo ”创建服务器上临时目录:${SERTMPPATH}”
SSHEXEC mkdir -p ${SERTMPPATH}
echo "上传文件到服务器:${SERTMPPATH}"
eval SSHSCP " -r ${TMPPATH}/output.zip ${SERVER}:${SERTMPPATH}"
echo "解压文件到服务器:${SERTMPPATH}"
eval SSHEXEC " unzip ${SERTMPPATH}/output.zip -d ${SERTMPPATH}"
echo "停止服务器上的docker容器:rstone-web-nuxt3"
eval SSHEXEC "sudo docker stop rstone-web-nuxt3"
echo "拷贝文件到服务器:/docker-data/rstone-web-nuxt3/app"
eval SSHEXEC "sudo rm -rf /docker-data/rstone-web-nuxt3/app/* "
eval SSHEXEC "sudo cp -r ${SERTMPPATH}/.output/* /docker-data/rstone-web-nuxt3/app/"
echo "启动服务器上的docker容器:rstone-web-nuxt3"
eval SSHEXEC "sudo docker start rstone-web-nuxt3"
echo "删除服务器上临时目录:${SERTMPPATH}"
SSHEXEC "yes | sudo rm -rf ${SERTMPPATH}"
echo "发布完成"
- 执行
- 生成项目: npm run build
- 执行部署脚本: ./sh/deploy.sh