前端项目打包发布脚本
- 构建成功后自动压缩带日期的压缩包 package20230720
- 上传 build 包到服务器
- 在服务器上备份上次的包命名为 name_bak
- 首次输入服务器密码后续执行脚本无需输入密码
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
function ZIP() { [[ "$OSTYPE" == "darwin"* ]] && { zip -r "$ZIP_NAME" "$(basename "$FILE_NAME")";} || { powershell -c "Compress-Archive -Path "$FILE_NAME" -DestinationPath "$ZIP_NAME" -Force"; } }
[ ! -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 -r ./$FILE_NAME $USER@$SERVER:$REMOTE_DIR
[ $? -eq 0 ] && echo "上传文件 $FILE_NAME 成功!" || echo "上传文件 $FILE_NAME 失败!"