Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
install_sh
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
install_sh
Commits
9233e129
提交
9233e129
authored
10月 24, 2024
作者:
yoyoyo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1
上级
3cbe2787
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
9 行增加
和
208 行删除
+9
-208
商城_install.sh
商城_install.sh
+9
-208
没有找到文件。
production
_install.sh
→
商城
_install.sh
浏览文件 @
9233e129
...
...
@@ -3,11 +3,7 @@
runprojects
=
"http://git.wkwork.xyz/tiktok/production-run.git"
projects
=(
# 项目名 项目仓库 项目保存目录
"server http://git.wkwork.xyz/tiktok/production-server.git /home/production-server"
"client http://git.wkwork.xyz/tiktok/production-client.git /home/production-client"
)
cd
/home
...
...
@@ -42,24 +38,6 @@ echo_content() {
esac
}
# 函数:解析项目信息
get_project_info
()
{
local
project_info
=
"
$1
"
local
index
=
"
$2
"
IFS
=
' '
read
-r
-a
project_array
<<<
"
$project_info
"
echo
"
${
project_array
[
$index
]
}
"
}
# 函数:获取所有项目名称
get_project_names
(){
local
names
=()
for
project
in
"
${
projects
[@]
}
"
;
do
names+
=(
"
$(
get_project_info
"
$project
"
0
)
"
)
done
echo
"
${
names
[@]
}
"
}
# 函数:检查并安装 Git
check_git
()
{
...
...
@@ -112,58 +90,6 @@ install_docker() {
}
# 函数: 初始化脚本 检查环境
init_environment_check
(){
echo_content
"green"
"初始化脚本 检查环境..."
check_git
install_docker
project_name
=
$runprojects
pull_project
()
}
init_environment_check
# 函数:选择要操作的项目
select_project
()
{
local
project_names
=(
$(
get_project_names
)
)
# 判断项目数量
if
[
${#
project_names
[@]
}
-eq
1
]
;
then
selected_project
=
"
${
project_names
[0]
}
"
project_name
=
$(
get_project_info
"
${
projects
[0]
}
"
0
)
project_repo
=
$(
get_project_info
"
${
projects
[0]
}
"
1
)
project_dir
=
$(
get_project_info
"
${
projects
[0]
}
"
2
)
else
echo_content
"yellow"
"
\n\n
"
echo_content
"yellow"
"请选择要操作的项目
\n
"
# 自定义 PS3 提示符
PS3
=
"请输入项目对应的数字:"
select
selected_project
in
"
${
project_names
[@]
}
"
;
do
if
[
-n
"
$selected_project
"
]
;
then
for
project
in
"
${
projects
[@]
}
"
;
do
if
[
"
$(
get_project_info
"
$project
"
0
)
"
=
"
$selected_project
"
]
;
then
project_name
=
$(
get_project_info
"
${
projects
[0]
}
"
0
)
project_repo
=
$(
get_project_info
"
$project
"
1
)
project_dir
=
$(
get_project_info
"
$project
"
2
)
break
fi
done
break
else
echo_content
"red"
"无效的选择,请重新选择。"
fi
done
fi
}
# 函数:切换分支
set_branches
(){
# 获取当前分支
...
...
@@ -207,7 +133,7 @@ set_branches(){
# 函数:拉取项目代码
pull_project
()
{
echo_content
"green"
"
$
project_name
项目本地未安装,开始拉取..."
echo_content
"green"
"
$
runprojects
项目本地未安装,开始拉取..."
# 检查凭据是否存在
if
[
-f
"
$CREDENTIALS_FILE
"
]
;
then
source
"
$CREDENTIALS_FILE
"
...
...
@@ -242,140 +168,15 @@ pull_project() {
}
update_project
()
{
cd
"
$project_dir
"
||
exit
1
set_branches
git pull origin
"
$current_branch
"
# 从当前分支拉取最新代码
if
[
$?
-eq
0
]
;
then
echo_content
"green"
"项目更新完成。"
else
echo_content
"red"
"更新失败。"
exit
1
fi
}
# 函数:检查项目是否已经存在
check_project
()
{
if
[
-d
"
$project_dir
"
]
;
then
update_project
else
pull_project
# 执行项目的初次拉取
fi
}
# 函数:启动或重启项目
start_project
()
{
cd
"
$project_dir
"
||
exit
1
echo_content
"green"
"是否要启动/重启项目?(y/n):"
read
-r
restart
if
[
"
$restart
"
=
"y"
]
;
then
if
[
-f
"./start.sh"
]
;
then
./start.sh
echo_content
"green"
"项目已启动/重启。"
else
echo_content
"red"
"未找到启动脚本。"
fi
fi
docker-compose up
-d
}
# 函数:卸载项目
uninstall_project
()
{
if
[
-d
"
$project_dir
"
]
;
then
echo_content
"yellow"
"你确定要卸载项目 '
$selected_project
' 吗?此操作将删除项目目录 '
$project_dir
' (y/n):"
read
-r
confirm_uninstall
if
[
"
$confirm_uninstall
"
=
"y"
]
;
then
echo_content
"green"
"正在卸载项目 '
$selected_project
'..."
rm
-rf
"
$project_dir
"
# 删除项目目录
if
[
$?
-eq
0
]
;
then
echo_content
"green"
"项目 '
$selected_project
' 已成功卸载。"
else
echo_content
"red"
"卸载失败。"
fi
else
echo_content
"yellow"
"卸载操作已取消。"
fi
else
echo_content
"red"
"项目目录不存在,无法卸载。"
fi
}
# 函数:检查项目是否已经存在
is_project_installed
()
{
local
project_dir
=
"
$1
"
if
[
-d
"
$project_dir
"
]
;
then
return
0
# 项目已安装
else
return
1
# 项目未安装
fi
}
# 函数:选择要执行的操作
select_operation
()
{
echo_content
"yellow"
"请选择要执行的操作:"
if
is_project_installed
"
$project_dir
"
;
then
# 如果项目已安装,显示“更新代码”和“重启项目”
PS3
=
"请输入操作对应的数字:"
select
operation
in
"更新代码"
"启动/重启"
"卸载"
;
do
case
$REPLY
in
1
)
echo_content
"green"
"你选择了操作: 更新代码"
break
;;
2
)
echo_content
"green"
"你选择了操作: 启动/重启"
break
;;
3
)
echo_content
"green"
"你选择了操作: 卸载项目"
break
;;
*
)
echo_content
"red"
"无效的选择,请输入 1 2 。"
;;
esac
done
else
# 如果项目未安装,直接执行安装操作
echo_content
"yellow"
"
$project_name
项目未安装,开始安装..."
operation
=
"安装"
perform_operation
select_operation
fi
}
# 函数:根据用户选择执行操作
perform_operation
()
{
if
[
"
$operation
"
==
"安装"
]
||
[
"
$operation
"
==
"更新代码"
]
;
then
check_project
# 执行安装或更新
start_project
elif
[
"
$operation
"
==
"启动/重启"
]
;
then
start_project
# 启动或重启项目
elif
[
"
$operation
"
==
"卸载"
]
;
then
uninstall_project
# 卸载
else
echo_content
"red"
"无效的操作。"
fi
# 函数: 初始化脚本 检查环境
init_environment_check
(){
echo_content
"green"
"初始化脚本 检查环境..."
check_git
install_docker
pull_project
()
}
# 入口函数:多项目部署
main
()
{
select_project
select_operation
perform_operation
echo_content
"red"
"脚本执行完毕结束"
}
init_environment_check
# 调用入口函数
main
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论