Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
demoinstall
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
demoinstall
Commits
dd337789
提交
dd337789
authored
8月 06, 2025
作者:
Andy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
34
上级
1f7c80fa
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
462 行增加
和
400 行删除
+462
-400
demo_video.sh
demo_video.sh
+462
-400
没有找到文件。
demo_video.sh
浏览文件 @
dd337789
#!/bin/bash
#!/bin/bash
install_dir
=
"/home/
ubuntu
"
install_dir
=
"/home/
bdvideo
"
production_run_dir
=
"
$install_dir
/install_projects"
#
production_run_dir="$install_dir/install_projects"
production_run_repo
=
"git.wkwork.xyz/root/install_projects.git"
#
production_run_repo="git.wkwork.xyz/root/install_projects.git"
production_server_config_dir
=
"
$install_dir
/production-server-config"
#
production_server_config_dir="$install_dir/production-server-config"
production_server_config_repo
=
"git.wkwork.xyz/tiktok/production-server-config.git"
#
production_server_config_repo="git.wkwork.xyz/tiktok/production-server-config.git"
production_mysql_dir
=
"
$install_dir
/production-mysql"
#
production_mysql_dir="$install_dir/production-mysql"
production_mysql_repo
=
"git.wkwork.xyz/tiktok/production-mysql.git"
#
production_mysql_repo="git.wkwork.xyz/tiktok/production-mysql.git"
production_install_dir
=
"
$production_run_dir
/production"
#
production_install_dir="$production_run_dir/production"
projects
=(
#
projects=(
# 项目名 项目仓库 项目保存目录
#
# 项目名 项目仓库 项目保存目录
"server git.wkwork.xyz/tiktok/production-server.git
$install_dir
/production-server"
#
"server git.wkwork.xyz/tiktok/production-server.git $install_dir/production-server"
"client git.wkwork.xyz/tiktok/production-client.git
$install_dir
/production-client"
#
"client git.wkwork.xyz/tiktok/production-client.git $install_dir/production-client"
)
#
)
if
[
!
-d
"
$install_dir
"
]
;
then
if
[
!
-d
"
$install_dir
"
]
;
then
mkdir
-p
"
$install_dir
"
mkdir
-p
"
$install_dir
"
...
@@ -25,8 +25,8 @@ fi
...
@@ -25,8 +25,8 @@ fi
cd
$install_dir
cd
$install_dir
BRANCH_FILE_SUFFIX
=
".branch"
#
BRANCH_FILE_SUFFIX=".branch"
CREDENTIALS_FILE
=
"
$HOME
/.git_credentials"
#
CREDENTIALS_FILE="$HOME/.git_credentials"
# 输出函数
# 输出函数
echo_content
()
{
echo_content
()
{
...
@@ -204,380 +204,380 @@ check_install_docker() {
...
@@ -204,380 +204,380 @@ check_install_docker() {
}
}
# 函数:解析项目信息
#
#
函数:解析项目信息
get_project_info
()
{
#
get_project_info() {
local
project_info
=
"
$1
"
#
local project_info="$1"
local
index
=
"
$2
"
#
local index="$2"
IFS
=
' '
read
-r
-a
project_array
<<<
"
$project_info
"
#
IFS=' ' read -r -a project_array <<<"$project_info"
echo
"
${
project_array
[
$index
]
}
"
#
echo "${project_array[$index]}"
}
#
}
# 函数:获取所有项目名称
#
#
函数:获取所有项目名称
get_project_names
()
{
#
get_project_names() {
local
names
=()
#
local names=()
for
project
in
"
${
projects
[@]
}
"
;
do
#
for project in "${projects[@]}"; do
names+
=(
"
$(
get_project_info
"
$project
"
0
)
"
)
#
names+=("$(get_project_info "$project" 0)")
done
#
done
echo
"
${
names
[@]
}
"
#
echo "${names[@]}"
}
#
}
set_branches
()
{
#
set_branches() {
repo_dir
=
$1
#
repo_dir=$1
repo_name
=
$2
#
repo_name=$2
cd
"
$repo_dir
"
||
exit
1
#
cd "$repo_dir" || exit 1
# 获取当前分支
#
# 获取当前分支
current_branch
=
$(
git branch
--show-current
)
#
current_branch=$(git branch --show-current)
if
[
-z
"
$current_branch
"
]
;
then
#
if [ -z "$current_branch" ]; then
echo_content
"red"
"未能获取当前分支,可能项目没有被正确初始化为git仓库。"
#
echo_content "red" "未能获取当前分支,可能项目没有被正确初始化为git仓库。"
exit
1
#
exit 1
fi
#
fi
git fetch
#
git fetch
# 获取所有远程分支
#
# 获取所有远程分支
branches
=
$(
git branch
-r
|
sed
's/origin\///'
|
grep
-v
'HEAD'
)
#
branches=$(git branch -r | sed 's/origin\///' | grep -v 'HEAD')
#打印当前分支名称
#
#打印当前分支名称
branch_count
=
$(
echo
"
$branches
"
|
wc
-l
)
#
branch_count=$(echo "$branches" | wc -l)
if
[
"
$branch_count
"
-gt
1
]
;
then
#
if [ "$branch_count" -gt 1 ]; then
echo_content
"yellow"
"
$repo_name
项目:分支选择 (如继续使用 '
$current_branch
' 直接回车):"
#
echo_content "yellow" "$repo_name 项目:分支选择 (如继续使用 '$current_branch' 直接回车):"
# 显示分支列表
#
# 显示分支列表
i
=
1
#
i=1
for
branch
in
$branches
;
do
#
for branch in $branches; do
echo
"
$i
)
$branch
"
#
echo "$i) $branch"
i
=
$((
i
+
1
))
#
i=$((i + 1))
done
#
done
# 提示用户选择
#
# 提示用户选择
read
-p
"请输入分支对应的数字 (回车保持当前分支:
$current_branch
): "
input
#
read -p "请输入分支对应的数字 (回车保持当前分支: $current_branch): " input
# 如果用户直接按回车,保持当前分支
#
# 如果用户直接按回车,保持当前分支
if
[
-z
"
$input
"
]
;
then
#
if [ -z "$input" ]; then
echo_content
"yellow"
"继续使用当前分支:
$current_branch
"
#
echo_content "yellow" "继续使用当前分支: $current_branch"
branch
=
"
$current_branch
"
#
branch="$current_branch"
else
#
else
# 验证输入是否为有效的数字
#
# 验证输入是否为有效的数字
if
[[
"
$input
"
=
~ ^[0-9]+
$
]]
&&
((
input
>=
1
&&
input <
=
branch_count
))
;
then
#
if [[ "$input" =~ ^[0-9]+$ ]] && ((input >= 1 && input <= branch_count)); then
selected_branch
=
$(
echo
"
$branches
"
|
sed
-n
"
${
input
}
p"
| xargs
)
#
selected_branch=$(echo "$branches" | sed -n "${input}p" | xargs)
echo_content
"green"
"你选择了分支:
$selected_branch
"
#
echo_content "green" "你选择了分支: $selected_branch"
# 切换到选定分支
#
# 切换到选定分支
if
git show-ref
--verify
--quiet
"refs/heads/
$selected_branch
"
;
then
#
if git show-ref --verify --quiet "refs/heads/$selected_branch"; then
git checkout
"
$selected_branch
"
# 切换到本地分支
#
git checkout "$selected_branch" # 切换到本地分支
else
#
else
git checkout
-b
"
$selected_branch
"
"origin/
$selected_branch
"
# 从远程分支创建并切换
#
git checkout -b "$selected_branch" "origin/$selected_branch" # 从远程分支创建并切换
fi
#
fi
else
#
else
echo_content
"red"
"无效的输入,请重新运行脚本。"
#
echo_content "red" "无效的输入,请重新运行脚本。"
exit
1
#
exit 1
fi
#
fi
fi
#
fi
fi
#
fi
}
#
}
updata_project
()
{
#
updata_project() {
repo_dir
=
$1
#
repo_dir=$1
repo_name
=
$2
#
repo_name=$2
set_branches
$repo_dir
$repo_name
#
set_branches $repo_dir $repo_name
cd
"
$repo_dir
"
||
exit
1
#
cd "$repo_dir" || exit 1
# 检查工作区是否有未提交的更改
#
# 检查工作区是否有未提交的更改
if
[[
-n
$(
git status
--porcelain
)
]]
;
then
#
if [[ -n $(git status --porcelain) ]]; then
git add
.
#
git add .
git commit
-m
"Auto-commit: 保存当前变动"
#
git commit -m "Auto-commit: 保存当前变动"
fi
#
fi
CURRENT_BRANCH
=
$(
git rev-parse
--abbrev-ref
HEAD
)
#
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
# git pull origin "$CURRENT_BRANCH"
#
# git pull origin "$CURRENT_BRANCH"
git pull
--rebase
-X
theirs origin
"
$CURRENT_BRANCH
"
#
git pull --rebase -X theirs origin "$CURRENT_BRANCH"
if
[
$?
-ne
0
]
;
then
#
if [ $? -ne 0 ]; then
echo_content
"red"
"更新代码失败,请手动检查冲突。"
#
echo_content "red" "更新代码失败,请手动检查冲突。"
else
#
else
echo_content
"green"
"代码更新完成。"
#
echo_content "green" "代码更新完成。"
fi
#
fi
}
#
}
# 函数:拉取项目代码
#
#
函数:拉取项目代码
pull_project
()
{
#
pull_project() {
repo_url
=
$1
#
repo_url=$1
repo_dir
=
$2
#
repo_dir=$2
repo_name
=
$3
#
repo_name=$3
# 检查凭据是否存在
#
# 检查凭据是否存在
if
[
-f
"
$CREDENTIALS_FILE
"
]
;
then
#
if [ -f "$CREDENTIALS_FILE" ]; then
source
"
$CREDENTIALS_FILE
"
#
source "$CREDENTIALS_FILE"
else
#
else
echo
"请输入 Git 用户名:"
#
echo "请输入 Git 用户名:"
read
-r
-p
"用户名: "
git_username
#
read -r -p "用户名: " git_username
echo
"请输入 Git 密码:"
#
echo "请输入 Git 密码:"
read
-s
-p
"密码: "
git_password
#
read -s -p "密码: " git_password
echo
# 换行
#
echo # 换行
# 询问是否保存凭据
#
# 询问是否保存凭据
echo
"是否保存凭据到
$CREDENTIALS_FILE
以便下次使用?"
#
echo "是否保存凭据到 $CREDENTIALS_FILE 以便下次使用?"
read
-p
"请选择(y/n): "
save_credentials
#
read -p "请选择(y/n): " save_credentials
echo
# 换行
#
echo # 换行
if
[
"
$save_credentials
"
=
"y"
]
;
then
#
if [ "$save_credentials" = "y" ]; then
echo
"git_username=
\"
$git_username
\"
"
>
"
$CREDENTIALS_FILE
"
#
echo "git_username=\"$git_username\"" >"$CREDENTIALS_FILE"
echo
"git_password=
\"
$git_password
\"
"
>>
"
$CREDENTIALS_FILE
"
#
echo "git_password=\"$git_password\"" >>"$CREDENTIALS_FILE"
chmod
600
"
$CREDENTIALS_FILE
"
# 设置文件权限,仅用户可读写
#
chmod 600 "$CREDENTIALS_FILE" # 设置文件权限,仅用户可读写
fi
#
fi
fi
#
fi
# 克隆私有仓库
#
# 克隆私有仓库
repo
=
"https://
$git_username
:
$git_password
@
$repo_url
"
#
repo="https://$git_username:$git_password@$repo_url"
echo_content
"green"
"克隆仓库
$repo
..."
#
echo_content "green" "克隆仓库 $repo ..."
git clone
$repo
"
$repo_dir
"
#
git clone $repo "$repo_dir"
if
[
$?
-ne
0
]
;
then
#
if [ $? -ne 0 ]; then
rm
$CREDENTIALS_FILE
#
rm $CREDENTIALS_FILE
echo_content
"red"
"克隆仓库失败,请检查仓库地址和凭据"
#
echo_content "red" "克隆仓库失败,请检查仓库地址和凭据"
pull_project
$repo_url
$repo_dir
$repo_name
#
pull_project $repo_url $repo_dir $repo_name
fi
#
fi
set_branches
$repo_dir
$repo_name
#
set_branches $repo_dir $repo_name
}
#
}
# 函数:卸载项目
#
#
函数:卸载项目
uninstall_project
()
{
#
uninstall_project() {
if
[
-d
"
$install_dir
"
]
;
then
#
if [ -d "$install_dir" ]; then
echo_content
"yellow"
"你确定要卸载项目吗?此操作将删除项目目录 '
$install_dir
' (y/n):"
#
echo_content "yellow" "你确定要卸载项目吗?此操作将删除项目目录 '$install_dir' (y/n):"
read
-r
confirm_uninstall
#
read -r confirm_uninstall
if
[
"
$confirm_uninstall
"
=
"y"
]
;
then
#
if [ "$confirm_uninstall" = "y" ]; then
echo_content
"green"
"正在卸载项目..."
#
echo_content "green" "正在卸载项目..."
cd
$production_install_dir
#
cd $production_install_dir
docker-compose down
#
docker-compose down
docker network
rm
production_mall_network
#
docker network rm production_mall_network
rm
-rf
"
$install_dir
"
# 删除项目目录
#
rm -rf "$install_dir" # 删除项目目录
if
[
$?
-eq
0
]
;
then
#
if [ $? -eq 0 ]; then
echo_content
"green"
"项目已成功卸载。"
#
echo_content "green" "项目已成功卸载。"
else
#
else
echo_content
"red"
"卸载失败。"
#
echo_content "red" "卸载失败。"
fi
#
fi
else
#
else
echo_content
"yellow"
"卸载操作已取消。"
#
echo_content "yellow" "卸载操作已取消。"
fi
#
fi
else
#
else
echo_content
"red"
"项目目录不存在,无法卸载。"
#
echo_content "red" "项目目录不存在,无法卸载。"
fi
#
fi
}
#
}
# 函数:启动或重启项目
#
#
函数:启动或重启项目
start_project
()
{
#
start_project() {
cd
"
$production_install_dir
"
||
exit
1
#
cd "$production_install_dir" || exit 1
rm
nginx/nginx.conf
#
rm nginx/nginx.conf
rm
-rf
nginx/nginx.conf
#
rm -rf nginx/nginx.conf
cp
nginx/nginx_clear_mysql.conf nginx/nginx.conf
#
cp nginx/nginx_clear_mysql.conf nginx/nginx.conf
echo_content
"green"
"是否要启动/重启 项目?(y/n):"
#
echo_content "green" "是否要启动/重启 项目?(y/n):"
read
-r
restart
#
read -r restart
if
[
"
$restart
"
=
"y"
]
;
then
#
if [ "$restart" = "y" ]; then
if
docker-compose ps |
grep
-q
"Up"
;
then
#
if docker-compose ps | grep -q "Up"; then
# 定义服务列表
#
# 定义服务列表
services
=(
"mall-admin"
"mall-api"
"mall-data"
"nginx"
"mall-tools"
"images_proxy"
)
#
services=("mall-admin" "mall-api" "mall-data" "nginx" "mall-tools" "images_proxy")
# 遍历服务列表
#
# 遍历服务列表
for
service
in
"
${
services
[@]
}
"
;
do
#
for service in "${services[@]}"; do
# 检查容器是否已创建
#
# 检查容器是否已创建
if
docker ps
-a
--format
'{{.Names}}'
|
grep
-Eq
"(
${
service
}
|_[a-zA-Z0-9]+_
${
service
}
)$"
;
then
#
if docker ps -a --format '{{.Names}}' | grep -Eq "(${service}|_[a-zA-Z0-9]+_${service})$"; then
echo
"docker-compose restart
$service
"
#
echo "docker-compose restart $service"
docker-compose restart
"
$service
"
#
docker-compose restart "$service"
else
#
else
echo
"docker-compose up -d
$service
"
#
echo "docker-compose up -d $service"
docker-compose up
-d
"
$service
"
#
docker-compose up -d "$service"
fi
#
fi
done
#
done
# docker-compose restart mall-admin mall-api mall-data nginx mall-tools go-nginx myiframe images_proxy proxy-mysql proxy-server
#
# docker-compose restart mall-admin mall-api mall-data nginx mall-tools go-nginx myiframe images_proxy proxy-mysql proxy-server
echo
"重启中 预计 60秒左右启动成功 ..."
#
echo "重启中 预计 60秒左右启动成功 ..."
sleep
60
#
sleep 60
else
#
else
docker-compose up
-d
#
docker-compose up -d
echo
"第一次启动 预计 150 秒左右启动成功 ..."
#
echo "第一次启动 预计 150 秒左右启动成功 ..."
sleep
100
#
sleep 100
docker-compose restart mall-admin mall-api mall-data
#
docker-compose restart mall-admin mall-api mall-data
echo
"重启中 预计 60秒左右启动成功 ..."
#
echo "重启中 预计 60秒左右启动成功 ..."
sleep
60
#
sleep 60
fi
#
fi
fi
#
fi
}
#
}
# 函数:选择要更新的项目
#
#
函数:选择要更新的项目
select_project
()
{
#
select_project() {
local
project_names
=(
$(
get_project_names
)
)
#
local project_names=($(get_project_names))
# 判断项目数量
#
# 判断项目数量
if
[
${#
project_names
[@]
}
-eq
1
]
;
then
#
if [ ${#project_names[@]} -eq 1 ]; then
selected_project
=
"
${
project_names
[0]
}
"
#
selected_project="${project_names[0]}"
project_dir
=
$(
get_project_info
"
${
projects
[0]
}
"
2
)
#
project_dir=$(get_project_info "${projects[0]}" 2)
project_name
=
$(
get_project_info
"
${
projects
[0]
}
"
0
)
#
project_name=$(get_project_info "${projects[0]}" 0)
else
#
else
echo_content
"yellow"
"
\n\n
"
#
echo_content "yellow" "\n\n"
echo_content
"yellow"
"请选择要更新的的项目
\n
"
#
echo_content "yellow" "请选择要更新的的项目\n"
# 自定义 PS3 提示符
#
# 自定义 PS3 提示符
PS3
=
"请输入项目对应的数字:"
#
PS3="请输入项目对应的数字:"
select
selected_project
in
"
${
project_names
[@]
}
"
;
do
#
select selected_project in "${project_names[@]}"; do
if
[
-n
"
$selected_project
"
]
;
then
#
if [ -n "$selected_project" ]; then
for
project
in
"
${
projects
[@]
}
"
;
do
#
for project in "${projects[@]}"; do
if
[
"
$(
get_project_info
"
$project
"
0
)
"
=
"
$selected_project
"
]
;
then
#
if [ "$(get_project_info "$project" 0)" = "$selected_project" ]; then
project_dir
=
$(
get_project_info
"
$project
"
2
)
#
project_dir=$(get_project_info "$project" 2)
project_name
=
$(
get_project_info
"
$project
"
0
)
#
project_name=$(get_project_info "$project" 0)
break
2
#
break 2
fi
#
fi
done
#
done
else
#
else
echo_content
"red"
"无效的选择,请重新选择。"
#
echo_content "red" "无效的选择,请重新选择。"
continue
#
continue
fi
#
fi
done
#
done
fi
#
fi
updata_project
"
$project_dir
"
"
$project_name
"
#
updata_project "$project_dir" "$project_name"
}
#
}
# 函数:选择要执行的操作
#
#
函数:选择要执行的操作
select_operation
()
{
#
select_operation() {
echo_content
"yellow"
"请选择要执行的操作:"
#
echo_content "yellow" "请选择要执行的操作:"
PS3
=
"请输入操作对应的数字:"
#
PS3="请输入操作对应的数字:"
select
operation
in
"更新项目"
"启动/重启【项目】"
"启动/重启【mysql】"
"对外开放【mysql】"
"重置容器"
"卸载"
"退出"
;
do
#
select operation in "更新项目" "启动/重启【项目】" "启动/重启【mysql】" "对外开放【mysql】" "重置容器" "卸载" "退出"; do
case
$REPLY
in
#
case $REPLY in
1
)
#
1)
echo_content
"green"
"你选择了操作: 更新项目"
#
echo_content "green" "你选择了操作: 更新项目"
select_project
#
select_project
start_project
#
start_project
break
#
break
;;
#
;;
2
)
#
2)
echo_content
"green"
"你选择了操作: 商城(启动/重启)"
#
echo_content "green" "你选择了操作: 商城(启动/重启)"
start_project
#
start_project
break
#
break
;;
#
;;
3
)
#
3)
echo_content
"green"
"你选择了操作: 重启mysql"
#
echo_content "green" "你选择了操作: 重启mysql"
cd
"
$production_install_dir
"
||
exit
1
#
cd "$production_install_dir" || exit 1
docker-compose restart mysql
#
docker-compose restart mysql
break
#
break
;;
#
;;
4
)
#
4)
echo_content
"green"
"对外开放【mysql】"
#
echo_content "green" "对外开放【mysql】"
cd
"
$production_install_dir
"
||
exit
1
#
cd "$production_install_dir" || exit 1
rm
nginx/nginx.conf
#
rm nginx/nginx.conf
rm
-rf
nginx/nginx.conf
#
rm -rf nginx/nginx.conf
cp
nginx/nginx_open_mysql.conf nginx/nginx.conf
#
cp nginx/nginx_open_mysql.conf nginx/nginx.conf
docker-compose
rm
-sf
nginx
#
docker-compose rm -sf nginx
docker-compose up
-d
nginx
#
docker-compose up -d nginx
break
#
break
;;
#
;;
5
)
#
5)
echo_content
"green"
"你选择了操作: 重置容器"
#
echo_content "green" "你选择了操作: 重置容器"
echo_content
"green"
"是否要启动/重启 项目?(y/n):"
#
echo_content "green" "是否要启动/重启 项目?(y/n):"
read
-r
restart
#
read -r restart
if
[
"
$restart
"
=
"y"
]
;
then
#
if [ "$restart" = "y" ]; then
docker
rm
-f
$(
docker ps
-aq
)
#
docker rm -f $(docker ps -aq)
echo_content
"green"
"容器全部删除成功 请重启服务"
#
echo_content "green" "容器全部删除成功 请重启服务"
start_project
#
start_project
fi
#
fi
exit
#
exit
;;
#
;;
6
)
#
6)
echo_content
"green"
"你选择了操作: 卸载"
#
echo_content "green" "你选择了操作: 卸载"
uninstall_project
#
uninstall_project
exit
#
exit
;;
#
;;
7
)
#
7)
echo_content
"green"
"你选择了操作: 退出"
#
echo_content "green" "你选择了操作: 退出"
exit
#
exit
;;
#
;;
*
)
#
*)
echo_content
"red"
"无效的选择"
#
echo_content "red" "无效的选择"
continue
#
continue
;;
#
;;
esac
#
esac
done
#
done
}
#
}
# 函数: 初始化脚本 检查环境
#
#
函数: 初始化脚本 检查环境
init_environment_check
()
{
#
init_environment_check() {
if
[
!
-d
"
$production_run_dir
/.git"
]
;
then
#
if [ ! -d "$production_run_dir/.git" ]; then
# 运行相关逻辑,找到匹配项后可立即处理
#
# 运行相关逻辑,找到匹配项后可立即处理
echo_content
"green"
"拉取项目: production_run"
#
echo_content "green" "拉取项目: production_run"
echo_content
"green"
"项目仓库:
$production_run_repo
"
#
echo_content "green" "项目仓库: $production_run_repo"
echo_content
"green"
"项目目录:
$production_run_dir
"
#
echo_content "green" "项目目录: $production_run_dir"
pull_project
"
$production_run_repo
"
"
$production_run_dir
"
"production_run"
#
pull_project "$production_run_repo" "$production_run_dir" "production_run"
else
#
else
echo_content
"green"
"更新项目: production_run"
#
echo_content "green" "更新项目: production_run"
echo_content
"green"
"项目仓库:
$production_run_repo
"
#
echo_content "green" "项目仓库: $production_run_repo"
echo_content
"green"
"项目目录:
$production_run_dir
"
#
echo_content "green" "项目目录: $production_run_dir"
updata_project
"
$production_run_dir
"
"production_run"
#
updata_project "$production_run_dir" "production_run"
fi
#
fi
if
[
!
-d
"
$production_mysql_dir
/.git"
]
;
then
#
if [ ! -d "$production_mysql_dir/.git" ]; then
# 运行相关逻辑,找到匹配项后可立即处理
#
# 运行相关逻辑,找到匹配项后可立即处理
echo_content
"green"
"拉取项目: production_mysql"
#
echo_content "green" "拉取项目: production_mysql"
echo_content
"green"
"项目仓库:
$production_mysql_repo
"
#
echo_content "green" "项目仓库: $production_mysql_repo"
echo_content
"green"
"项目目录:
$production_mysql_dir
"
#
echo_content "green" "项目目录: $production_mysql_dir"
pull_project
"
$production_mysql_repo
"
"
$production_mysql_dir
"
"服务端配置"
#
pull_project "$production_mysql_repo" "$production_mysql_dir" "服务端配置"
cd
"
$production_mysql_dir
/mysql"
#
cd "$production_mysql_dir/mysql"
unzip data.zip
#
unzip data.zip
# else
#
# else
# echo_content "green" "更新项目: production_mysql"
#
# echo_content "green" "更新项目: production_mysql"
# echo_content "green" "项目仓库: $production_mysql_repo"
#
# echo_content "green" "项目仓库: $production_mysql_repo"
# echo_content "green" "项目目录: $production_mysql_dir"
#
# echo_content "green" "项目目录: $production_mysql_dir"
# updata_project "$production_mysql_dir" "production_mysql"
#
# updata_project "$production_mysql_dir" "production_mysql"
fi
#
fi
if
[
!
-d
"
$production_server_config_dir
/.git"
]
;
then
#
if [ ! -d "$production_server_config_dir/.git" ]; then
# 运行相关逻辑,找到匹配项后可立即处理
#
# 运行相关逻辑,找到匹配项后可立即处理
echo_content
"green"
"拉取项目: 服务端配置文件"
#
echo_content "green" "拉取项目: 服务端配置文件"
echo_content
"green"
"项目仓库:
$production_server_config_repo
"
#
echo_content "green" "项目仓库: $production_server_config_repo"
echo_content
"green"
"项目目录:
$production_server_config_dir
"
#
echo_content "green" "项目目录: $production_server_config_dir"
pull_project
"
$production_server_config_repo
"
"
$production_server_config_dir
"
"服务端配置"
#
pull_project "$production_server_config_repo" "$production_server_config_dir" "服务端配置"
else
#
else
echo_content
"green"
"更新项目: 服务端配置文件"
#
echo_content "green" "更新项目: 服务端配置文件"
echo_content
"green"
"项目仓库:
$production_server_config_repo
"
#
echo_content "green" "项目仓库: $production_server_config_repo"
echo_content
"green"
"项目目录:
$production_server_config_dir
"
#
echo_content "green" "项目目录: $production_server_config_dir"
updata_project
"
$production_server_config_dir
"
"服务端配置文件"
#
updata_project "$production_server_config_dir" "服务端配置文件"
fi
#
fi
get_project_names
#
get_project_names
for
project
in
"
${
projects
[@]
}
"
;
do
#
for project in "${projects[@]}"; do
# 获取项目信息
#
# 获取项目信息
project_name
=
$(
get_project_info
"
$project
"
0
)
#
project_name=$(get_project_info "$project" 0)
project_repo
=
$(
get_project_info
"
$project
"
1
)
#
project_repo=$(get_project_info "$project" 1)
project_dir
=
$(
get_project_info
"
$project
"
2
)
#
project_dir=$(get_project_info "$project" 2)
# 检查项目目录中是否存在 .git 目录(即项目是否已拉取)
#
# 检查项目目录中是否存在 .git 目录(即项目是否已拉取)
if
[
!
-d
"
$project_dir
/.git"
]
;
then
#
if [ ! -d "$project_dir/.git" ]; then
# 如果项目未被拉取,执行拉取操作
#
# 如果项目未被拉取,执行拉取操作
echo_content
"green"
"拉取项目:
$project_name
"
#
echo_content "green" "拉取项目: $project_name"
echo_content
"green"
"项目仓库:
$project_repo
"
#
echo_content "green" "项目仓库: $project_repo"
echo_content
"green"
"项目目录:
$project_dir
"
#
echo_content "green" "项目目录: $project_dir"
# 调用 pull_project 函数进行项目拉取
#
# 调用 pull_project 函数进行项目拉取
pull_project
"
$project_repo
"
"
$project_dir
"
"
$project_name
"
#
pull_project "$project_repo" "$project_dir" "$project_name"
fi
#
fi
# rm -rf "$production_run_dir/tomallmcat/"
#
# rm -rf "$production_run_dir/tomallmcat/"
# ln -s "$project_dir/$project_name" "$production_run_dir/$project_name"
#
# ln -s "$project_dir/$project_name" "$production_run_dir/$project_name"
done
#
done
}
#
}
# 更新分支函数
# 更新分支函数
update_branch
()
{
update_branch
()
{
...
@@ -632,9 +632,9 @@ clone_branch() {
...
@@ -632,9 +632,9 @@ clone_branch() {
done
done
}
}
deal_svr
()
{
deal_
git_
svr
()
{
REPO_URL
=
git@git.wkwork.xyz:LaunchDemo/0000_BD_Demo_Video_Svr.git
REPO_URL
=
"git@git.wkwork.xyz:LaunchDemo/0000_BD_Demo_Video_Svr.git"
BASE_DIR
=
"./svr"
BASE_DIR
=
"./svr"
MAX_RETRY
=
3
# 最大重试次数
MAX_RETRY
=
3
# 最大重试次数
...
@@ -656,11 +656,42 @@ deal_svr() {
...
@@ -656,11 +656,42 @@ deal_svr() {
done
done
}
}
write_rsa
(){
deal_git_web
()
{
REPO_URL
=
"git@andy:LaunchDemo/0000_BD_Demo_Video_Web.git"
BASE_DIR
=
"./svr"
MAX_RETRY
=
3
# 最大重试次数
BRANCHES
=(
"main-admin"
"agent-admin"
"mobile"
"webgame"
"bank-client"
"bank-server"
"down"
)
# 主循环
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
}
check_git_account
()
{
# 1. 检查 id_rsa 文件是否存在
if
[
!
-f
/root/.ssh/id_rsa
]
;
then
mkdir
-p
/root/.ssh
mkdir
-p
/root/.ssh
chmod
700 /root/.ssh
chmod
700 /root/.ssh
cat
>
/root/.ssh/id_rsa
<<
'
EOF
'
cat
>
/root/.ssh/id_rsa
<<
'
EOF
'
-----BEGIN OPENSSH PRIVATE KEY-----
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAgEAz7r3WluTI/W0j8clFnT7U0KV/uzDt03MAEzQylu1+PC3vpnxx0Lj
NhAAAAAwEAAQAAAgEAz7r3WluTI/W0j8clFnT7U0KV/uzDt03MAEzQylu1+PC3vpnxx0Lj
...
@@ -712,7 +743,32 @@ CbqSBWOBXuEAAAASODg4ODg4ODhAZ21haWwuY29tAQ==
...
@@ -712,7 +743,32 @@ CbqSBWOBXuEAAAASODg4ODg4ODhAZ21haWwuY29tAQ==
-----END OPENSSH PRIVATE KEY-----
-----END OPENSSH PRIVATE KEY-----
EOF
EOF
chmod
600 /root/.ssh/id_rsa
chmod
600 /root/.ssh/id_rsa
echo
"✅ id_rsa 写入成功"
else
echo
"⚠️ /root/.ssh/id_rsa 已存在,未做修改"
fi
# 2. 检测 SSH 连接是否成功
echo
"🧪 正在测试 SSH 连接..."
ssh
-o
StrictHostKeyChecking
=
no
-T
git@git.wkwork.xyz 2>&1 |
grep
"successfully authenticated"
>
/dev/null
if
[
$?
-eq
0
]
;
then
echo
"✅ SSH 连接成功 (已通过身份验证)"
return
1
else
echo
"❌ SSH 连接失败 (请检查私钥与服务器)"
return
0
fi
# # 3. 测试 Git 仓库是否可以访问
# echo "🧪 正在测试 Git 仓库访问..."
# git ls-remote "$REPO_URL" &>/dev/null
# if [ $? -eq 0 ]; then
# echo "✅ Git 仓库连接成功"
# else
# echo "❌ Git 仓库连接失败 (请检查 REPO_URL 与权限)"
# exit 1
# fi
}
}
...
@@ -731,14 +787,20 @@ main() {
...
@@ -731,14 +787,20 @@ main() {
check_install_unzip
check_install_unzip
check_install_docker
check_install_docker
echo_content
"green"
" 2. 写入git账户"
echo_content
"green"
" 2. 测试git账户"
write_rsa
if
check_git_account
;
then
echo
"🔗 SSH 连接正常"
# echo_content "green" " 2. 获取更新"
else
echo
"⚠️ SSH 连接失败,退出"
exit
1
fi
echo_content
"green"
" 3. 获取更新"
echo_content
"green"
" 3. 获取更新"
cd
$install_dir
cd
$install_dir
deal_svr
echo_content
"blue"
"获取 svr"
deal_git_svr
echo_content
"blue"
"获取 web"
deal_git_web
# init_environment_check
# init_environment_check
# select_operation
# select_operation
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论