提交 33581c0b authored 作者: Andy's avatar Andy

12

上级 0568c4db
......@@ -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 ../../..
......
#!/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} "\033[31m$2\033[0m"
;;
"green")
${ECHO_TYPE} "\033[32m$2\033[0m"
;;
"yellow")
${ECHO_TYPE} "\033[33m$2\033[0m"
;;
"blue")
${ECHO_TYPE} "\033[34m$2\033[0m"
;;
"purple")
${ECHO_TYPE} "\033[35m$2\033[0m"
;;
"skyBlue")
${ECHO_TYPE} "\033[36m$2\033[0m"
;;
"white")
${ECHO_TYPE} "\033[37m$2\033[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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论