auto-sync: 2026-06-08 20:23:16
Deploy / ci (push) Waiting to run
Deploy / deploy (push) Blocked by required conditions
Deploy / notify-deploy-failure (push) Blocked by required conditions

This commit is contained in:
cfdaily
2026-06-08 20:23:16 +08:00
parent dbf24d2088
commit aa1ca811fe
+51
View File
@@ -18,6 +18,8 @@ usage() {
echo " --source=DIR 源码目录 (default: 项目开发目录)" echo " --source=DIR 源码目录 (default: 项目开发目录)"
echo " --target=DIR 安装目标目录 (default: ~/.sanguo_projects/sanguo_moziplus_v2)" echo " --target=DIR 安装目标目录 (default: ~/.sanguo_projects/sanguo_moziplus_v2)"
echo " --skip-build 跳过前端构建" echo " --skip-build 跳过前端构建"
echo " --version 显示当前部署版本"
echo " --rollback 回滚到上一个部署版本"
echo " -h, --help 显示帮助" echo " -h, --help 显示帮助"
exit 0 exit 0
} }
@@ -27,10 +29,59 @@ for arg in "$@"; do
--source=*) SOURCE_DIR="${arg#*=}" ;; --source=*) SOURCE_DIR="${arg#*=}" ;;
--target=*) TARGET_DIR="${arg#*=}" ;; --target=*) TARGET_DIR="${arg#*=}" ;;
--skip-build) SKIP_BUILD=true ;; --skip-build) SKIP_BUILD=true ;;
--version) ACTION=version ;;
--rollback) ACTION=rollback ;;
--health-check) ;; # 保留兼容,无额外操作
-h|--help) usage ;; -h|--help) usage ;;
esac esac
done done
ACTION="${ACTION:-deploy}"
# ── 部署历史文件 ──
HISTORY_FILE="$TARGET_DIR/data/deploy-history.jsonl"
# ── version 分支 ──
if [ "$ACTION" = "version" ]; then
if [ -f "$HISTORY_FILE" ]; then
LAST_COMMIT=$(tail -1 "$HISTORY_FILE" | python3 -c 'import sys,json; print(json.load(sys.stdin).get("commit","unknown"))' 2>/dev/null || echo "unknown")
echo "$LAST_COMMIT"
else
echo "No deployment history found."
fi
exit 0
fi
# ── rollback 分支 ──
if [ "$ACTION" = "rollback" ]; then
if [ ! -f "$HISTORY_FILE" ]; then
echo "❌ No deployment history, cannot rollback."
exit 1
fi
LINE_COUNT=$(wc -l < "$HISTORY_FILE")
if [ "$LINE_COUNT" -lt 2 ]; then
echo "❌ Not enough history for rollback (need at least 2 entries)."
exit 1
fi
ROLLBACK_COMMIT=$(tail -2 "$HISTORY_FILE" | head -1 | python3 -c 'import sys,json; print(json.load(sys.stdin).get("commit",""))' 2>/dev/null || echo "")
if [ -z "$ROLLBACK_COMMIT" ]; then
echo "❌ Could not parse previous commit from history."
exit 1
fi
echo "🔄 Rolling back to commit: $ROLLBACK_COMMIT"
# 保存当前分支/commit 以便恢复
CURRENT_REF=$(git -C "$SOURCE_DIR" rev-parse HEAD 2>/dev/null || echo "")
# checkout 到目标 commit
git -C "$SOURCE_DIR" checkout "$ROLLBACK_COMMIT" 2>/dev/null
# 使用 DEPLOY_OVERRIDE_COMMIT 显式传 commit hash
DEPLOY_OVERRIDE_COMMIT="$ROLLBACK_COMMIT" bash "$0" --source="$SOURCE_DIR" --target="$TARGET_DIR" --skip-build
# 恢复到原来的 commit
if [ -n "$CURRENT_REF" ]; then
git -C "$SOURCE_DIR" checkout "$CURRENT_REF" 2>/dev/null || true
fi
exit 0
fi
echo "🚀 Deploying moziplus v2" echo "🚀 Deploying moziplus v2"
echo " Source: $SOURCE_DIR" echo " Source: $SOURCE_DIR"
echo " Target: $TARGET_DIR" echo " Target: $TARGET_DIR"