Files
apes-Authon-Web/publish.sh
T
2026-08-09 11:46:38 +08:00

57 lines
1.9 KiB
Bash

#!/bin/bash
set -e
export NODE_HOME=/data/tools/node-16
export PATH=$NODE_HOME/bin:$PATH
cd /data/saas-web || exit
# ========== 更新最新代码(先检查冲突,无冲突才更新) ==========
echo "检查最新代码更新..."
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if ! git fetch origin "$BRANCH"; then
echo "拉取远程分支失败,终止部署"
exit 1
fi
LOCAL_HEAD=$(git rev-parse HEAD)
REMOTE_HEAD=$(git rev-parse "origin/$BRANCH")
if [ "$LOCAL_HEAD" = "$REMOTE_HEAD" ]; then
echo "本地代码已是最新,无需更新"
else
echo "本地与远程不一致,先进行冲突检测..."
if git merge --no-commit --no-ff "origin/$BRANCH" > /tmp/git_merge_check.log 2>&1; then
git merge --abort >/dev/null 2>&1 || true
echo "无冲突,开始更新代码..."
if ! git pull origin "$BRANCH"; then
echo "代码更新失败,终止部署"
exit 1
fi
echo "代码更新完成"
else
echo "!!! 检测到冲突(或本地未提交修改阻止更新),详情:"
cat /tmp/git_merge_check.log
CONFLICT_FILES=$(git diff --name-only --diff-filter=U 2>/dev/null)
if [ -n "$CONFLICT_FILES" ]; then
echo "冲突文件列表:"
echo "$CONFLICT_FILES"
fi
git merge --abort >/dev/null 2>&1 || true
echo "存在冲突,终止更新并退出部署"
exit 1
fi
fi
echo '开始安装依赖'
/data/tools/node-16/bin/npm --registry=http://registry.npmmirror.com install
echo '开始构建'
/data/tools/node-16/bin/npm --registry=http://registry.npmmirror.com run build:prod
zip -r saas-web.zip saas-web
echo '开始传输..'
scp -P 22 -o "ProxyCommand ssh -W %h:%p root@47.115.213.168" saas-web.zip root@192.168.1.158:/data/services/saas-web.zip
echo "开始替换..."
ssh -p 22 -o "ProxyCommand ssh -W %h:%p root@47.115.213.168" root@192.168.1.158 "cd /data/services; unzip -o saas-web.zip"
echo "上线成功...."
rm -rf saas-web
rm -rf saas-web.zip
echo "上线完毕...."