Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
install
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
LaunchDeploy
install
Commits
33581c0b
提交
33581c0b
authored
9月 10, 2025
作者:
Andy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
12
上级
0568c4db
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
306 行增加
和
5 行删除
+306
-5
1037_Exch_Sgpmx.sh
1037_Exch_Sgpmx.sh
+5
-5
1037_Exch_Sgpmx_Test.sh
1037_Exch_Sgpmx_Test.sh
+301
-0
没有找到文件。
1037_Exch_Sgpmx.sh
浏览文件 @
33581c0b
...
...
@@ -160,7 +160,7 @@ fetch_git_svr() {
MAX_RETRY
=
3
# 最大重试次数
BRANCHES
=(
"1037_Exch_Sgpmx"
"1037_Exch_Sgpmx
_Test
"
)
# 主循环
for
BRANCH
in
"
${
BRANCHES
[@]
}
"
;
do
...
...
@@ -182,7 +182,7 @@ fetch_git_web() {
BRANCHES
=(
"admin"
"1037_Exch_Sgpmx"
"1037_Exch_Sgpmx
_Test
"
)
# 主循环
...
...
@@ -199,16 +199,16 @@ fetch_git_web() {
run_docker
()
{
cd
./java_exch_svr/1037_Exch_Sgpmx/docker-base
||
exit
cd
./java_exch_svr/1037_Exch_Sgpmx
_Test
/docker-base
||
exit
make addnet
make up
cd
../../..
cd
./java_exch_svr/1037_Exch_Sgpmx/docker-nginx
||
exit
cd
./java_exch_svr/1037_Exch_Sgpmx
_Test
/docker-nginx
||
exit
make up
cd
../../..
cd
./java_exch_svr/1037_Exch_Sgpmx/docker-svr
||
exit
cd
./java_exch_svr/1037_Exch_Sgpmx
_Test
/docker-svr
||
exit
make up
cd
../../..
...
...
1037_Exch_Sgpmx_Test.sh
0 → 100644
浏览文件 @
33581c0b
#!/bin/bash
install_dir
=
"/Sgpmx"
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
}
# 函数:检查并安装 Git
check_install_git
()
{
echo_content
"green"
"🔍 检测 Git 是否已安装..."
if
command
-v
git
>
/dev/null 2>&1
;
then
echo
"✅ Git 已安装,版本:
$(
git
--version
)
"
else
echo
"❌ Git 未安装,正在安装 Git..."
sudo
apt update
sudo
apt
install
-y
git
if
command
-v
git
>
/dev/null 2>&1
;
then
echo
"✅ Git 安装成功,版本:
$(
git
--version
)
"
else
echo
"❌ Git 安装失败,请检查网络或手动安装。"
exit
1
fi
fi
echo
"🎉 Git 检测与安装完成!"
}
# 函数:检查并安装 Docker
check_install_docker
()
{
echo_content
"green"
"检查并安装 Docker..."
if
!
[[
$(
docker
-v
2>/dev/null
)
]]
;
then
sh <
(
curl
-sL
https://get.docker.com
)
fi
if
!
[[
$(
docker
-v
2>/dev/null
)
]]
;
then
curl
-sSL
http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
fi
if
!
[[
$(
docker
-v
2>/dev/null
)
]]
;
then
curl
-sSL
https://get.daocloud.io/docker | sh
fi
#!/bin/bash
if
!
command
-v
docker-compose &>/dev/null
;
then
# 下载 docker-compose
sudo
curl
-L
"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-
$(
uname
-s
)
-
$(
uname
-m
)
"
-o
/usr/local/bin/docker-compose
# 设置执行权限
sudo chmod
+x /usr/local/bin/docker-compose
# 检查是否安装成功
if
!
command
-v
docker-compose &>/dev/null
;
then
echo
"docker-compose 安装失败。"
exit
1
fi
fi
}
# 更新分支函数(带更新前恢复)
update_branch
()
{
local
repo_url
=
$1
local
branch
=
$2
local
target_dir
=
$3
echo
"Updating branch '
$branch
' in '
$target_dir
'..."
cd
"
$target_dir
"
||
return
1
# 切换到目标分支
git checkout
"
$branch
"
>
/dev/null 2>&1
# 更新前恢复到干净状态
echo
"🔄 Resetting local changes on '
$branch
'..."
git reset
--hard
HEAD
>
/dev/null 2>&1
git clean
-fd
>
/dev/null 2>&1
# 获取远程最新提交
git fetch origin
"
$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
}
# 克隆分支函数
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
}
fetch_git_svr
()
{
REPO_URL
=
"http://88888888:88888888@git.wkwork.xyz/LaunchDeploy/java_exch_svr.git"
BASE_DIR
=
"./java_exch_svr"
MAX_RETRY
=
3
# 最大重试次数
BRANCHES
=(
"1037_Exch_Sgpmx_Test"
)
# 主循环
for
BRANCH
in
"
${
BRANCHES
[@]
}
"
;
do
TARGET_DIR
=
"
$BASE_DIR
/
$BRANCH
"
if
[
-d
"
$TARGET_DIR
/.git"
]
;
then
update_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
else
clone_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
fi
done
}
fetch_git_web
()
{
REPO_URL
=
"http://88888888:88888888@git.wkwork.xyz/LaunchDeploy/java_exch_web.git"
BASE_DIR
=
"./java_exch_web"
MAX_RETRY
=
3
# 最大重试次数
BRANCHES
=(
"admin"
"1037_Exch_Sgpmx_Test"
)
# 主循环
for
BRANCH
in
"
${
BRANCHES
[@]
}
"
;
do
TARGET_DIR
=
"
$BASE_DIR
/
$BRANCH
"
if
[
-d
"
$TARGET_DIR
/.git"
]
;
then
update_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
else
clone_branch
"
$REPO_URL
"
"
$BRANCH
"
"
$TARGET_DIR
"
fi
done
}
run_docker
()
{
cd
./java_exch_svr/1037_Exch_Sgpmx_Test/docker-base
||
exit
make addnet
make up
cd
../../..
cd
./java_exch_svr/1037_Exch_Sgpmx_Test/docker-nginx
||
exit
make up
cd
../../..
cd
./java_exch_svr/1037_Exch_Sgpmx_Test/docker-svr
||
exit
make up
cd
../../..
}
del_docker
()
{
docker ps
#!/bin/bash
# 清除所有 Docker 容器(仅当数量 > 0 时)
CONTAINER_COUNT
=
$(
docker ps
-aq
|
wc
-l
)
if
[
"
$CONTAINER_COUNT
"
-gt
0
]
;
then
echo
"⚠️ 检测到
$CONTAINER_COUNT
个容器,正在清除..."
docker stop
$(
docker ps
-aq
)
docker
rm
$(
docker ps
-aq
)
echo
"✅ 所有容器已清除"
else
echo
"👌 没有需要清理的容器"
fi
docker ps
}
# main
main
()
{
#!/bin/bash
pause
()
{
read
-rp
"按回车键继续..."
}
while
true
;
do
clear
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
" 主菜单 "
echo_content
"skyBlue"
"============================"
echo_content
"skyBlue"
"1) 检查环境"
echo_content
"skyBlue"
"2) 测试 Git 账户"
echo_content
"skyBlue"
"3) 获取 Svr"
echo_content
"skyBlue"
"4) 获取 Web"
echo_content
"skyBlue"
"5) 运行所有 Docker"
echo_content
"skyBlue"
"6) 清理所有 Docker"
echo_content
"skyBlue"
"0) 退出"
echo_content
"skyBlue"
"============================"
read
-rp
"请输入选项 [0-6]: "
choice
case
$choice
in
1
)
check_install_git
check_install_docker
pause
;;
2
)
pause
;;
3
)
fetch_git_svr
pause
;;
4
)
fetch_git_web
pause
;;
5
)
run_docker
pause
;;
6
)
del_docker
pause
;;
0
)
echo
"👋 退出程序."
exit
0
;;
*
)
echo
"⚠️ 无效选项,请重新输入!"
sleep
1
;;
esac
done
}
main
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论