提交 80538786 authored 作者: Andy's avatar Andy

12

上级 f1ebc0e0
......@@ -184,10 +184,8 @@ update_branch() {
echo_content "green" "✅ 分支 $tmp_branch 更新完成。"
}
Git_Token=QFF_7BNyjHsq_Zvfsfut # 私有仓库需要填 Token,公有仓库留空即可
# ========== 主函数:管理全部分支 ==========
fetch_git_svr() {
echo_content "green" "📦 获取服务器端分支(支持 Token + git pull)..."
......@@ -220,7 +218,6 @@ fetch_git_svr() {
echo_content "green" "🎉 所有 Svr 分支同步完成!"
}
fetch_git_web() {
echo_content "green" "📦 获取服务器端分支(支持 Token + git pull)..."
......@@ -252,7 +249,6 @@ fetch_git_web() {
echo_content "green" "🎉 所有 Svr 分支同步完成!"
}
run_docker() {
cd ./svr/docker-base || exit
......
......@@ -137,121 +137,199 @@ check_install_PM2() {
echo "🎉 Node.js & PM2 环境准备完成!"
}
# 更新分支函数(带更新前恢复)
update_branch() {
local repo_url=$1
local branch=$2
local target_dir=$3
# ========== 克隆函数 ==========
clone_branch() {
local tmp_repo_url="$1"
local tmp_branch="$2"
local tmp_target_dir="$3"
local tmp_max_retry="${4:-3}"
echo "⬇️ 克隆分支:$tmp_branch$tmp_target_dir"
tmp_retry=0
echo "git clone --branch "$tmp_branch" --depth=1 "$tmp_repo_url" "$tmp_target_dir""
until git clone --branch "$tmp_branch" --depth=1 "$tmp_repo_url" "$tmp_target_dir"; do
tmp_retry=$((tmp_retry + 1))
if [ "$tmp_retry" -ge "$tmp_max_retry" ]; then
echo_content "red" "❌ 克隆分支 $tmp_branch 失败,多次重试无效。"
return 1
fi
echo "重试克隆 ($tmp_retry/$tmp_max_retry)..."
sleep 2
done
echo_content "green" "✅ 分支 $tmp_branch 克隆完成。"
}
echo "Updating branch '$branch' in '$target_dir'..."
cd "$target_dir" || return 1
# ========== 更新函数 ==========
update_branch() {
local tmp_repo_url="$1"
local tmp_branch="$2"
local tmp_target_dir="$3"
# 切换到目标分支
git checkout "$branch" >/dev/null 2>&1
if [ ! -d "$tmp_target_dir/.git" ]; then
echo_content "red" "⚠️ 目录 $tmp_target_dir 不是 Git 仓库,无法更新。"
return 1
fi
# 更新前恢复到干净状态
echo "🔄 Resetting local changes on '$branch'..."
git reset --hard HEAD >/dev/null 2>&1
git clean -fd >/dev/null 2>&1
echo "🔄 更新分支:$tmp_branch$tmp_target_dir"
cd "$tmp_target_dir" || return 1
# 获取远程最新提交
git fetch origin "$branch"
# 允许被删除的远程分支同步
git fetch origin "$tmp_branch" --depth=1
git checkout "$tmp_branch" || git checkout -b "$tmp_branch" origin/"$tmp_branch"
git pull origin "$tmp_branch"
local_commit=$(git rev-parse "$branch")
remote_commit=$(git rev-parse "origin/$branch")
if [ "$local_commit" = "$remote_commit" ]; then
echo "✅ Branch '$branch' is up-to-date."
else
echo "⬇️ Branch '$branch' has updates. Pulling changes..."
RETRY=0
until git pull origin "$branch"; do
RETRY=$((RETRY + 1))
if [ "$RETRY" -ge "$MAX_RETRY" ]; then
echo "❌ Failed to update '$branch' after $MAX_RETRY attempts."
break
fi
echo "Retrying pull for '$branch' ($RETRY/$MAX_RETRY)..."
sleep 2
done
fi
cd - >/dev/null
echo_content "green" "✅ 分支 $tmp_branch 更新完成。"
}
# 克隆分支函数
clone_branch() {
local repo_url=$1
local branch=$2
local target_dir=$3
echo "Cloning branch '$branch' into '$target_dir'..."
RETRY=0
until git clone --branch "$branch" --single-branch "$repo_url" "$target_dir"; do
RETRY=$((RETRY + 1))
if [ "$RETRY" -ge "$MAX_RETRY" ]; then
echo "❌ Failed to clone '$branch' after $MAX_RETRY attempts."
break
fi
echo "Retrying clone for '$branch' ($RETRY/$MAX_RETRY)..."
sleep 2
done
}
Git_Token=QFF_7BNyjHsq_Zvfsfut # 私有仓库需要填 Token,公有仓库留空即可
# ========== 主函数:管理全部分支 ==========
fetch_git_svr() {
echo_content "green" "📦 获取服务器端分支(支持 Token + git pull)..."
# --- 配置区 ---
Git_User="LaunchDeploy" # GitHub 用户名或组织名
Git_Repo_Name="wk_gameplat_svr"
REPO_URL="git@git.wkwork.xyz:LaunchDeploy/wk_gameplat_svr.git"
BASE_DIR="./svr"
MAX_RETRY=3 # 最大重试次数
GitHub_Repo_Branchs=(
"1031_Game_JinSha"
BRANCHES=(
"docker-base"
"docker-game"
"docker-proxy"
"bdgame"
)
# 主循环
for BRANCH in "${BRANCHES[@]}"; do
TARGET_DIR="$BASE_DIR/$BRANCH"
# Token HTTPS 地址
Repo_Url="https://${Git_Token}@git.wkwork.xyz/${Git_User}/${Git_Repo_Name}.git"
mkdir -p "$BASE_DIR"
for Branch in "${GitHub_Repo_Branchs[@]}"; do
tmp_target_dir="$BASE_DIR/$Branch"
echo_content "skyBlue" "🌀 分支:$Branch"
if [ -d "$tmp_target_dir/.git" ]; then
update_branch "$Repo_Url" "$Branch" "$tmp_target_dir"
if [ -d "$TARGET_DIR/.git" ]; then
update_branch "$REPO_URL" "$BRANCH" "$TARGET_DIR"
else
clone_branch "$Repo_Url" "$Branch" "$tmp_target_dir"
clone_branch "$REPO_URL" "$BRANCH" "$TARGET_DIR"
fi
done
echo_content "green" "🎉 所有 Svr 分支同步完成!"
}
fetch_git_web() {
echo_content "green" "📦 获取服务器端分支(支持 Token + git pull)..."
# --- 配置区 ---
Git_User="LaunchDeploy" # GitHub 用户名或组织名
Git_Repo_Name="wk_gameplat_web"
REPO_URL="git@git.wkwork.xyz:LaunchDemo/0000_BD_Demo_Game_Web.git"
BASE_DIR="./web"
GitHub_Repo_Branchs=(
"1031_Game_JinSha"
MAX_RETRY=3 # 最大重试次数
BRANCHES=(
"main-admin"
"agent-admin"
"bank-client"
"bank-server"
"down"
"mobile"
"webgame"
)
# 主循环
for BRANCH in "${BRANCHES[@]}"; do
TARGET_DIR="$BASE_DIR/$BRANCH"
# Token HTTPS 地址
Repo_Url="https://${Git_Token}@git.wkwork.xyz/${Git_User}/${Git_Repo_Name}.git"
mkdir -p "$BASE_DIR"
for Branch in "${GitHub_Repo_Branchs[@]}"; do
tmp_target_dir="$BASE_DIR/$Branch"
echo_content "skyBlue" "🌀 分支:$Branch"
if [ -d "$tmp_target_dir/.git" ]; then
update_branch "$Repo_Url" "$Branch" "$tmp_target_dir"
if [ -d "$TARGET_DIR/.git" ]; then
update_branch "$REPO_URL" "$BRANCH" "$TARGET_DIR"
else
clone_branch "$Repo_Url" "$Branch" "$tmp_target_dir"
clone_branch "$REPO_URL" "$BRANCH" "$TARGET_DIR"
fi
done
echo_content "green" "🎉 所有 Svr 分支同步完成!"
}
check_git_account() {
# 1. 检查 id_rsa 文件是否存在
if [ ! -f /root/.ssh/id_rsa ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
cat >/root/.ssh/id_rsa <<'EOF'
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
EOF
chmod 600 /root/.ssh/id_rsa
echo "✅ id_rsa 写入成功"
else
echo "⚠️ /root/.ssh/id_rsa 已存在,未做修改"
fi
echo "🧪 测试 SSH 连接..."
RESULT=$(ssh -o StrictHostKeyChecking=no git@git.wkwork.xyz 2>&1)
echo "$RESULT"
if echo "$RESULT" | grep -q "Welcome to GitLab"; then
echo "✅ SSH 连接成功"
return 0
else
echo "❌ SSH 连接失败"
return 1
fi
}
run_docker() {
......@@ -295,7 +373,7 @@ main() {
echo_content "skyBlue" "============================"
echo_content "skyBlue" " 主菜单 "
echo_content "skyBlue" "============================"
echo_content "skyBlue" "2) 测试 Git 账户"
echo_content "skyBlue" "3) 获取 Svr"
echo_content "skyBlue" "4) 获取 Web"
echo_content "skyBlue" "5) 运行 Docker"
......@@ -305,6 +383,15 @@ main() {
read -rp "请输入选项 [0-6]: " choice
case $choice in
2)
if check_git_account; then
echo "✅ SSH 连接正常"
else
echo "❌ SSH 连接失败,请检查 SSH Key 或 Git 账户配置"
exit 1
fi
pause
;;
3)
fetch_git_svr
pause
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论