Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
install
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
LaunchDeploy
install
Commits
80538786
提交
80538786
authored
11月 03, 2025
作者:
Andy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
12
上级
f1ebc0e0
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
172 行增加
和
89 行删除
+172
-89
1031_Game_JinSha copy.sh
1031_Game_JinSha copy.sh
+0
-4
1031_Game_JinSha.sh
1031_Game_JinSha.sh
+172
-85
没有找到文件。
1031_Game_JinSha copy.sh
浏览文件 @
80538786
...
@@ -184,10 +184,8 @@ update_branch() {
...
@@ -184,10 +184,8 @@ update_branch() {
echo_content
"green"
"✅ 分支
$tmp_branch
更新完成。"
echo_content
"green"
"✅ 分支
$tmp_branch
更新完成。"
}
}
Git_Token
=
QFF_7BNyjHsq_Zvfsfut
# 私有仓库需要填 Token,公有仓库留空即可
Git_Token
=
QFF_7BNyjHsq_Zvfsfut
# 私有仓库需要填 Token,公有仓库留空即可
# ========== 主函数:管理全部分支 ==========
# ========== 主函数:管理全部分支 ==========
fetch_git_svr
()
{
fetch_git_svr
()
{
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
...
@@ -220,7 +218,6 @@ fetch_git_svr() {
...
@@ -220,7 +218,6 @@ fetch_git_svr() {
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
}
}
fetch_git_web
()
{
fetch_git_web
()
{
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
...
@@ -252,7 +249,6 @@ fetch_git_web() {
...
@@ -252,7 +249,6 @@ fetch_git_web() {
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
}
}
run_docker
()
{
run_docker
()
{
cd
./svr/docker-base
||
exit
cd
./svr/docker-base
||
exit
...
...
1031_Game_JinSha.sh
浏览文件 @
80538786
...
@@ -137,121 +137,199 @@ check_install_PM2() {
...
@@ -137,121 +137,199 @@ check_install_PM2() {
echo
"🎉 Node.js & PM2 环境准备完成!"
echo
"🎉 Node.js & PM2 环境准备完成!"
}
}
# 更新分支函数(带更新前恢复)
update_branch
()
{
local
repo_url
=
$1
local
branch
=
$2
local
target_dir
=
$3
# ========== 克隆函数 ==========
echo
"Updating branch '
$branch
' in '
$target_dir
'..."
clone_branch
()
{
cd
"
$target_dir
"
||
return
1
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
克隆完成。"
}
# ========== 更新函数 ==========
# 切换到目标分支
update_branch
()
{
git checkout
"
$branch
"
>
/dev/null 2>&1
local
tmp_repo_url
=
"
$1
"
local
tmp_branch
=
"
$2
"
local
tmp_target_dir
=
"
$3
"
if
[
!
-d
"
$tmp_target_dir
/.git"
]
;
then
# 更新前恢复到干净状态
echo_content
"red"
"⚠️ 目录
$tmp_target_dir
不是 Git 仓库,无法更新。
"
echo
"🔄 Resetting local changes on '
$branch
'...
"
return
1
git reset
--hard
HEAD
>
/dev/null 2>&
1
fi
git clean
-fd
>
/dev/null 2>&1
echo
"🔄 更新分支:
$tmp_branch
→
$tmp_target_dir
"
# 获取远程最新提交
cd
"
$tmp_target_dir
"
||
return
1
git fetch origin
"
$branch
"
# 允许被删除的远程分支同步
local_commit
=
$(
git rev-parse
"
$branch
"
)
git fetch origin
"
$tmp_branch
"
--depth
=
1
remote_commit
=
$(
git rev-parse
"origin/
$branch
"
)
git checkout
"
$tmp_branch
"
||
git checkout
-b
"
$tmp_branch
"
origin/
"
$tmp_branch
"
git pull origin
"
$tmp_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
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
()
{
fetch_git_svr
()
{
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
# --- 配置区 ---
Git_User
=
"LaunchDeploy"
# GitHub 用户名或组织名
REPO_URL
=
"git@git.wkwork.xyz:LaunchDeploy/wk_gameplat_svr.git"
Git_Repo_Name
=
"wk_gameplat_svr"
BASE_DIR
=
"./svr"
BASE_DIR
=
"./svr"
MAX_RETRY
=
3
# 最大重试次数
GitHub_Repo_Branchs
=(
BRANCHES
=(
"1031_Game_JinSha"
"docker-base"
"docker-game"
"docker-proxy"
"bdgame"
)
)
# 主循环
for
BRANCH
in
"
${
BRANCHES
[@]
}
"
;
do
TARGET_DIR
=
"
$BASE_DIR
/
$BRANCH
"
# Token HTTPS 地址
if
[
-d
"
$TARGET_DIR
/.git"
]
;
then
Repo_Url
=
"https://
${
Git_Token
}
@git.wkwork.xyz/
${
Git_User
}
/
${
Git_Repo_Name
}
.git"
update_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
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
"
else
else
clone_branch
"
$R
epo_Url
"
"
$Branch
"
"
$tmp_target_dir
"
clone_branch
"
$R
EPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
fi
fi
done
done
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
}
}
fetch_git_web
()
{
fetch_git_web
()
{
echo_content
"green"
"📦 获取服务器端分支(支持 Token + git pull)..."
# --- 配置区 ---
REPO_URL
=
"git@git.wkwork.xyz:LaunchDemo/0000_BD_Demo_Game_Web.git"
Git_User
=
"LaunchDeploy"
# GitHub 用户名或组织名
Git_Repo_Name
=
"wk_gameplat_web"
BASE_DIR
=
"./web"
BASE_DIR
=
"./web"
MAX_RETRY
=
3
# 最大重试次数
GitHub_Repo_Branchs
=(
"1031_Game_JinSha"
BRANCHES
=(
"main-admin"
"agent-admin"
"bank-client"
"bank-server"
"down"
"mobile"
"webgame"
)
)
# 主循环
for
BRANCH
in
"
${
BRANCHES
[@]
}
"
;
do
TARGET_DIR
=
"
$BASE_DIR
/
$BRANCH
"
# Token HTTPS 地址
if
[
-d
"
$TARGET_DIR
/.git"
]
;
then
Repo_Url
=
"https://
${
Git_Token
}
@git.wkwork.xyz/
${
Git_User
}
/
${
Git_Repo_Name
}
.git"
update_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
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
"
else
else
clone_branch
"
$R
epo_Url
"
"
$Branch
"
"
$tmp_target_dir
"
clone_branch
"
$R
EPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
fi
fi
done
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-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAgEAz7r3WluTI/W0j8clFnT7U0KV/uzDt03MAEzQylu1+PC3vpnxx0Lj
LQpyX8UgJMQv+teSK5iR6bEZzYupoUYdHEU1XJKqvVsKUfVVC2eu+xoLdt0iDwilINpuOw
On6wtk/I1L5ICJtGSMv+pvCNdrS35hgPiWpQBwmmWLWZ5Tgn3HPAf4rvFUcl6wWMhjmXwj
+Uw6VddHLrsleWBsehWTw/1Z5CdQmeJjxMf+qIeIpYWWnbJcLuVbHjUQb/kHU8DfRLNMV0
MVhJ+CcH6YlNQYQ4ddXYUyoM8QkgeGwME8jWoehUokDUG8j3SpeOcR4gceKTmyW089EQoK
QWtTGqCqDRHORTHHa529s/+qDgzwSuHCtLnP6+LAdbwRbewueFy2xCBu+lIJ0MV58AMtTz
Gf2PTQoHcU/mQOJHQE63Yxwc5Pp41dOmDvGKukYKNEZNXv0vYmCjsNm7g9a8LZOlXQMPzw
aVTsE/qidk+9orp6wMObi/Ulw28YiVa7IFNgXYl4JCns38RcX/c+QZtR/5gUpvuJbOTqYV
5r/q2BgO2oJXmCq65GCREtqJ/m6xDC7I3fjGCKareqRefkToOFMheHJnX/nyH4Pcz2DBD6
u6SSV6AKjywdmElzChaoXiARPEYkIThWPZ6L66/9Pj7AfhcPGXy43abTEoe+NTrDarCLY1
8AAAdIcGRi9nBkYvYAAAAHc3NoLXJzYQAAAgEAz7r3WluTI/W0j8clFnT7U0KV/uzDt03M
AEzQylu1+PC3vpnxx0LjLQpyX8UgJMQv+teSK5iR6bEZzYupoUYdHEU1XJKqvVsKUfVVC2
eu+xoLdt0iDwilINpuOwOn6wtk/I1L5ICJtGSMv+pvCNdrS35hgPiWpQBwmmWLWZ5Tgn3H
PAf4rvFUcl6wWMhjmXwj+Uw6VddHLrsleWBsehWTw/1Z5CdQmeJjxMf+qIeIpYWWnbJcLu
VbHjUQb/kHU8DfRLNMV0MVhJ+CcH6YlNQYQ4ddXYUyoM8QkgeGwME8jWoehUokDUG8j3Sp
eOcR4gceKTmyW089EQoKQWtTGqCqDRHORTHHa529s/+qDgzwSuHCtLnP6+LAdbwRbewueF
y2xCBu+lIJ0MV58AMtTzGf2PTQoHcU/mQOJHQE63Yxwc5Pp41dOmDvGKukYKNEZNXv0vYm
CjsNm7g9a8LZOlXQMPzwaVTsE/qidk+9orp6wMObi/Ulw28YiVa7IFNgXYl4JCns38RcX/
c+QZtR/5gUpvuJbOTqYV5r/q2BgO2oJXmCq65GCREtqJ/m6xDC7I3fjGCKareqRefkToOF
MheHJnX/nyH4Pcz2DBD6u6SSV6AKjywdmElzChaoXiARPEYkIThWPZ6L66/9Pj7AfhcPGX
y43abTEoe+NTrDarCLY18AAAADAQABAAACAASVED3FsAeRX6FITaYi1c8ZX0ECAgiPcRo/
QjUkiW1rX0eXZ8DzKxsO6ZpOjo32Z0SLmtAsC76cRysZ6Jeuee0/YupJhfYABciXC9WLkk
2Rs9e0Zbrv1Yyq+iwtFs2AMS3CWX6POKUVDrxxCcVSfdhqz5sjtgGqcnwav1SDweh//nQc
N5J3BQYyK9uu1/DxJG4BuMu0oFUEkH1j8MtPTIonPY4N2/ZOYHsHxQinV2P8qrzhzAIbfG
4R0kIAu/ZPVognwwhYaidvHqvSmb+2tK5QqcZAA5o5LG68NxnAvtAzxhE/TcTzwpq7gmgw
rgakDONF6uGewYRttJo1ft4jKyfCee9Rx2f4+qROpMuG/kuetZW+M73L5YwUvJxDZ46Rsb
JdacAeEjubFLtvFeF+jQiK9U0YyTQ+h6Gy8Gn53Bct8KQYqnUM/rj6seVUN5+xqhwg7ioO
m4cKctnAT/ZB5hNVyZD5ZRcgL/teSPP4M1fNnzhMvWQCBGX28gHWkuC+RXGrRYBxALaS5i
huQIg4Ie1e3h7/scoE1WYl5InF+8krhLk4FFD+/vz9gtVkQImLchNuVjaPuCwyINqPChfd
GBEPp6iNtrRYXA74Buuq74wvuI7EZXNRtxQoN2kY8rrtRDVW2OR23OkjykafDyKHsgQ9wd
i9mfU3b+s3ubhS6xzBAAABAC6DdTFst+YeyLB/OZ77w5Ms0GQ7YAMINmyfRP6EPOg6uw96
Y23/N4cjVajUejbptsdWPofJ5wuMBgXXCbxp4PdQRZvIl1jvfZTAKIcSF8EOqZiZdC8gGN
KDMZFr5aczYASLJOHjBZt9fcO3BjbQbcwLjQ1T5MN1tEaV9RlU3Uc8Aa1HgbZtD/nMYX9M
DZxoLqr7qEofJrBgDNcizy6vEbPNdu3WS6TkouKbTbV+pQYPcNVi28uyYG9H43oxJkMRha
o2L2n5FYdg4GmMO7bMDAnVyAUxXrpgsgL5mCqtiTLgQP1Pw8kRPUOe1QbozS8Lq+B+xj3n
46oVpW6yHI4NFu8AAAEBAObMqDZGeY9DmyCD+ZMpiRQqojrzlZSWaPrbCnk6tL/8bLk1iY
3JiLwEl8DWwhacdZEoP4HN8zddfoU3Bn0/zT7GFGSCqX3Agl/eJnlKqmxjIkSkx/8DeWAq
lougwxmYqb3tuSb7JTjkfHf/l4O+sLdEjKoAOfnGqi7iqmGv67UOGKFj98XGQlN8hgxBgj
0jXJ/rehsXPr7WhNtesdLT9s3pXuhsG6j7FYj+M1X//Q3w+eS7OH3cuF2t08m3lwbJbM4o
WQMEqHtlqQIMOLewf7kL8GHQ+0UN8///Y1j+ahoj2wFeuymXaOYIMgpA6HyCjpfKwvetny
WbLmWkT/9ISj8AAAEBAOZpelNEMRaSqSReidvaAmC2ReMAsrAHdsajeGalvDB7/5xUBthC
HAGbYo/nH6buiP2vznAPMuNITpcC2011wXAbmeSymIo1najSrXuPJCM5YXjYnvKBqsJ1m9
AIfnYQO+SZP8yJAxJptH9wrGOoZ/IRmGqprxqzVBYVWxodLNwdFZ5JFwI3+9Os1nYpX+ax
RnB8CBIcf1zPNR7tNm18Uq6RrEEfcqJ1v+usaMuYxGm+9ZNslISE59tduo2JF7J8xJ/7IB
nFPJb3oEEQrt3pBeVUAUFgjkpFeG8ot6jSvWUdgOCv+Qa+j0vrh86pNk4hXFyuJh12Snd7
CbqSBWOBXuEAAAASODg4ODg4ODhAZ21haWwuY29tAQ==
-----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
()
{
run_docker
()
{
...
@@ -295,7 +373,7 @@ main() {
...
@@ -295,7 +373,7 @@ main() {
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
" 主菜单 "
echo_content
"skyBlue"
" 主菜单 "
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
"2) 测试 Git 账户"
echo_content
"skyBlue"
"3) 获取 Svr"
echo_content
"skyBlue"
"3) 获取 Svr"
echo_content
"skyBlue"
"4) 获取 Web"
echo_content
"skyBlue"
"4) 获取 Web"
echo_content
"skyBlue"
"5) 运行 Docker"
echo_content
"skyBlue"
"5) 运行 Docker"
...
@@ -305,6 +383,15 @@ main() {
...
@@ -305,6 +383,15 @@ main() {
read
-rp
"请输入选项 [0-6]: "
choice
read
-rp
"请输入选项 [0-6]: "
choice
case
$choice
in
case
$choice
in
2
)
if
check_git_account
;
then
echo
"✅ SSH 连接正常"
else
echo
"❌ SSH 连接失败,请检查 SSH Key 或 Git 账户配置"
exit
1
fi
pause
;;
3
)
3
)
fetch_git_svr
fetch_git_svr
pause
pause
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论