Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
install
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
LaunchDeploy
install
Commits
f1ebc0e0
提交
f1ebc0e0
authored
11月 01, 2025
作者:
Andy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
12
上级
91cd0d5a
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
342 行增加
和
1 行删除
+342
-1
1031_Game_JinSha copy.sh
1031_Game_JinSha copy.sh
+340
-0
1031_Game_JinSha.sh
1031_Game_JinSha.sh
+2
-1
没有找到文件。
1031_Game_JinSha copy.sh
0 → 100755
浏览文件 @
f1ebc0e0
#!/bin/bash
install_dir
=
"/home/bdgame"
if
[
!
-d
"
$install_dir
"
]
;
then
mkdir
-p
"
$install_dir
"
fi
cd
$install_dir
# 输出函数
echo_content
()
{
ECHO_TYPE
=
"echo -e"
case
$1
in
"red"
)
${
ECHO_TYPE
}
"
\0
33[31m
$2
\0
33[0m"
;;
"green"
)
${
ECHO_TYPE
}
"
\0
33[32m
$2
\0
33[0m"
;;
"yellow"
)
${
ECHO_TYPE
}
"
\0
33[33m
$2
\0
33[0m"
;;
"blue"
)
${
ECHO_TYPE
}
"
\0
33[34m
$2
\0
33[0m"
;;
"purple"
)
${
ECHO_TYPE
}
"
\0
33[35m
$2
\0
33[0m"
;;
"skyBlue"
)
${
ECHO_TYPE
}
"
\0
33[36m
$2
\0
33[0m"
;;
"white"
)
${
ECHO_TYPE
}
"
\0
33[37m
$2
\0
33[0m"
;;
esac
}
# ======= 工具检查 =======
# jq
# curl
# docker
# make
# unzip
# nodejs
# npm
# pm2
check_install_dependencies
()
{
for
cmd
in
jq curl docker make unzip nodejs npm pm2
;
do
if
!
command
-v
"
$cmd
"
&>/dev/null
;
then
echo
"❌ 缺少依赖:
$cmd
"
echo
"请先安装:sudo apt install
$cmd
-y"
sudo
apt
install
$cmd
-y
# exit 1
fi
done
}
check_install_NodeJs
()
{
echo_content
"green"
"🔍 正在检测 Node.js 是否已安装..."
if
command
-v
node
>
/dev/null 2>&1
;
then
echo
"✅ Node.js 已安装,版本:
$(
node
-v
)
"
else
echo
"❌ 未检测到 Node.js,正在安装 Node.js 20.x..."
# 更新系统包索引
sudo
apt update
# 下载并执行 NodeSource 安装脚本
curl
-fsSL
https://deb.nodesource.com/setup_20.x |
sudo
-E
bash -
# 安装 Node.js
sudo
apt
install
-y
nodejs
# 检查安装是否成功
if
command
-v
node
>
/dev/null 2>&1
;
then
echo
"✅ Node.js 安装成功,版本:
$(
node
-v
)
"
else
echo
"❌ Node.js 安装失败,请检查网络或手动安装。"
exit
1
fi
fi
# 检测 npm 是否安装
if
command
-v
npm
>
/dev/null 2>&1
;
then
echo
"✅ npm 已安装,版本:
$(
npm
-v
)
"
else
echo
"❌ npm 未安装,尝试重新安装 Node.js 可能修复此问题。"
fi
}
check_install_PM2
()
{
echo_content
"green"
"🔍 检测 Node.js & PM2 是否已安装..."
echo_content
"blue"
" 🔍 检测 Node.js 是否已安装..."
if
command
-v
node
>
/dev/null 2>&1
;
then
echo
"✅ Node.js 已安装,版本:
$(
node
-v
)
"
else
echo
"❌ Node.js 未安装,正在安装 Node.js 20.x..."
sudo
apt update
curl
-fsSL
https://deb.nodesource.com/setup_20.x |
sudo
-E
bash -
sudo
apt
install
-y
nodejs
if
command
-v
node
>
/dev/null 2>&1
;
then
echo
"✅ Node.js 安装成功,版本:
$(
node
-v
)
"
else
echo
"❌ Node.js 安装失败,请检查网络。"
exit
1
fi
fi
echo_content
"blue"
" 🔍 检测 npm 是否已安装..."
if
command
-v
npm
>
/dev/null 2>&1
;
then
echo
"✅ npm 已安装,版本:
$(
npm
-v
)
"
else
echo
"❌ npm 未安装,尝试重新安装 Node.js 或手动安装 npm。"
exit
1
fi
echo_content
"blue"
" 🔍 检测 PM2 是否已安装..."
if
command
-v
pm2
>
/dev/null 2>&1
;
then
echo
"✅ PM2 已安装,版本:
$(
pm2
-v
)
"
else
echo
"❌ PM2 未安装,正在全局安装 PM2..."
sudo
npm
install
-g
pm2
if
command
-v
pm2
>
/dev/null 2>&1
;
then
echo
"✅ PM2 安装成功,版本:
$(
pm2
-v
)
"
else
echo
"❌ PM2 安装失败,请检查 npm 环境。"
exit
1
fi
fi
echo
"🎉 Node.js & PM2 环境准备完成!"
}
# ========== 克隆函数 ==========
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
克隆完成。"
}
# ========== 更新函数 ==========
update_branch
()
{
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 仓库,无法更新。"
return
1
fi
echo
"🔄 更新分支:
$tmp_branch
→
$tmp_target_dir
"
cd
"
$tmp_target_dir
"
||
return
1
# 允许被删除的远程分支同步
git fetch origin
"
$tmp_branch
"
--depth
=
1
git checkout
"
$tmp_branch
"
||
git checkout
-b
"
$tmp_branch
"
origin/
"
$tmp_branch
"
git pull origin
"
$tmp_branch
"
cd
-
>
/dev/null
echo_content
"green"
"✅ 分支
$tmp_branch
更新完成。"
}
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"
BASE_DIR
=
"./svr"
GitHub_Repo_Branchs
=(
"1031_Game_JinSha"
)
# 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
"
else
clone_branch
"
$Repo_Url
"
"
$Branch
"
"
$tmp_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"
BASE_DIR
=
"./web"
GitHub_Repo_Branchs
=(
"1031_Game_JinSha"
)
# 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
"
else
clone_branch
"
$Repo_Url
"
"
$Branch
"
"
$tmp_target_dir
"
fi
done
echo_content
"green"
"🎉 所有 Svr 分支同步完成!"
}
run_docker
()
{
cd
./svr/docker-base
||
exit
make addnet
make up
chmod
777 ../tmp/base/etcd/data
chmod
777 ../tmp/base/zookeeper/data
make up
cd
../..
cd
./svr/docker-game
||
exit
make up
cd
../..
cd
./svr/docker-proxy
||
exit
make up
cd
../..
}
run_service
()
{
cd
./svr/bdgame
||
exit
make export_env
make start
cd
../..
}
# main
main
()
{
#!/bin/bash
pause
()
{
read
-rp
"按回车键继续..."
}
while
true
;
do
clear
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
" 主菜单 "
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
"3) 获取 Svr"
echo_content
"skyBlue"
"4) 获取 Web"
echo_content
"skyBlue"
"5) 运行 Docker"
echo_content
"skyBlue"
"6) 运行 Game 服务"
echo_content
"skyBlue"
"0) 退出"
echo_content
"skyBlue"
"============================"
read
-rp
"请输入选项 [0-6]: "
choice
case
$choice
in
3
)
fetch_git_svr
pause
;;
4
)
fetch_git_web
pause
;;
5
)
run_docker
pause
;;
6
)
run_service
pause
;;
0
)
echo
"👋 退出程序."
exit
0
;;
*
)
echo
"⚠️ 无效选项,请重新输入!"
sleep
1
;;
esac
done
}
# ======= 安装默认工具 =======
# check_install_dependencies
# ======= 启动程序 =======
main
1031_Game_JinSha.sh
浏览文件 @
f1ebc0e0
...
@@ -148,6 +148,7 @@ clone_branch() {
...
@@ -148,6 +148,7 @@ clone_branch() {
echo
"⬇️ 克隆分支:
$tmp_branch
→
$tmp_target_dir
"
echo
"⬇️ 克隆分支:
$tmp_branch
→
$tmp_target_dir
"
tmp_retry
=
0
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
until
git clone
--branch
"
$tmp_branch
"
--depth
=
1
"
$tmp_repo_url
"
"
$tmp_target_dir
"
;
do
tmp_retry
=
$((
tmp_retry
+
1
))
tmp_retry
=
$((
tmp_retry
+
1
))
if
[
"
$tmp_retry
"
-ge
"
$tmp_max_retry
"
]
;
then
if
[
"
$tmp_retry
"
-ge
"
$tmp_max_retry
"
]
;
then
...
@@ -333,7 +334,7 @@ main() {
...
@@ -333,7 +334,7 @@ main() {
}
}
# ======= 安装默认工具 =======
# ======= 安装默认工具 =======
check_install_dependencies
#
check_install_dependencies
# ======= 启动程序 =======
# ======= 启动程序 =======
main
main
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论