利用脚本将代码部署到测试环境(.sh)

1.将上次的部署文件备份名为xxx_bak

2.首次需要输入环境密码

3.并生成一个zip的压缩包,方便部署到线上环境

4.在终端 输入./update.sh 则可执行

文件名update.sh,放在package.json文件同级

# @example: 1. ./update.sh 2. 输入服务器密码 【 如果不想每次都输入密码可以先生成密钥对,在复制到远程服务器中,终端执行操作 1. ssh-keygen -t rsa 2. ssh-copy-id root@192.168.0.140 】
# 设置变量 LOCAL_DIR - 当前目录,USER - 服务器用户名,SERVER - 服务器地址,REMOTE_DIR - 需要存放的服务器目录,FILE_NAME - 文件名称,ZIP_NAME - 生成压缩包名称
LOCAL_DIR=$(pwd)
USER="root"
SERVER="192.168.0.140"
REMOTE_DIR="/opt/weicx/webapps"
FILE_NAME="workCenter"
ZIP_NAME="$FILE_NAME$(date +'%Y%m%d').zip"

# 打包前端项目
npm run build

# 区分 Windows 和 Mac 进行压缩
function ZIP() { [[ "$OSTYPE" == "darwin"* ]] && { zip -r "$ZIP_NAME" "$(basename "$FILE_NAME")";} || { powershell -c "Compress-Archive -Path "$FILE_NAME" -DestinationPath "$ZIP_NAME" -Force"; } }

# 本地不存在就生成 SSH 密钥对
[ ! -f ~/.ssh/id_rsa ] && { ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa; } || { echo "已存在公钥!"; }    

# 如果未添加就将公钥复制到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@$SERVER 2>/dev/null

# 将文件压缩、检查打包是否成功
[ $? -eq 0 ] && { ZIP; echo "压缩 $FILE_NAME 成功!"; } || { echo "打包 $FILE_NAME 失败!"; exit 1; }

# 打印当前目录
echo "当前目录为:$LOCAL_DIR"

# 备份并删除服务器中原有包
ssh $USER@$SERVER "cd $REMOTE_DIR && rm -rf $FILE_NAME'_bak' && [ -d $FILE_NAME ] && { cp -r $FILE_NAME $FILE_NAME'_bak'; echo "备份成功!"; } || { echo "备份文件不存在!"; } && rm -rf $FILE_NAME" 

# 使用 SCP 命令将文件上传到远程服务器
scp -r ./$FILE_NAME $USER@$SERVER:$REMOTE_DIR

# 检查 SCP 命令是否成功执行
[ $? -eq 0 ] && echo "上传文件 $FILE_NAME 成功!" || echo "上传文件 $FILE_NAME 失败!"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值