提交 9233e129 authored 作者: yoyoyo's avatar yoyoyo

1

上级 3cbe2787
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论