|
|
|
@ -24,14 +24,24 @@ fi |
|
|
|
|
|
|
|
# 更新Docker Buildx到最新版本 |
|
|
|
echo "更新Docker Buildx..." |
|
|
|
# 卸载旧版本 |
|
|
|
docker buildx uninstall 2>/dev/null || true |
|
|
|
# 安装最新版本 |
|
|
|
docker buildx install |
|
|
|
# 创建并使用默认构建器 |
|
|
|
docker buildx create --name mybuilder --use 2>/dev/null || true |
|
|
|
# 重启Docker服务以应用更改 |
|
|
|
systemctl restart docker 2>/dev/null || true |
|
|
|
# 检查当前Buildx版本 |
|
|
|
buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1) |
|
|
|
if [[ "$buildx_version" < "0.17" ]]; then |
|
|
|
echo "当前Buildx版本 $buildx_version 低于要求的0.17,正在升级..." |
|
|
|
# 卸载旧版本 |
|
|
|
docker buildx uninstall 2>/dev/null || true |
|
|
|
# 安装最新版本 |
|
|
|
docker buildx install |
|
|
|
# 重启Docker服务以应用更改 |
|
|
|
systemctl restart docker 2>/dev/null || true |
|
|
|
# 等待Docker重启 |
|
|
|
sleep 5 |
|
|
|
# 创建并使用默认构建器 |
|
|
|
docker buildx create --name mybuilder --use 2>/dev/null || true |
|
|
|
fi |
|
|
|
# 验证Buildx版本 |
|
|
|
new_buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1) |
|
|
|
echo "当前Buildx版本: $new_buildx_version" |
|
|
|
|
|
|
|
echo "Docker工具检查完成" |
|
|
|
|
|
|
|
@ -41,37 +51,51 @@ fi |
|
|
|
|
|
|
|
# 处理代码仓库或更新代码 |
|
|
|
echo "处理代码仓库..." |
|
|
|
if [ ! -d /opt/project_app/.git ]; then |
|
|
|
# 如果目录不存在.git文件夹,检查目录是否为空 |
|
|
|
if [ "$(ls -A /opt/project_app)" ]; then |
|
|
|
# 目录不为空,创建临时目录克隆后复制文件 |
|
|
|
echo "目标目录已存在且不为空,使用临时目录克隆代码..." |
|
|
|
git clone http://8.137.125.67:4000/Swt29/Project_app.git /tmp/project_app_temp |
|
|
|
# 复制.git文件夹和所有文件 |
|
|
|
cp -r /tmp/project_app_temp/. /opt/project_app/ |
|
|
|
# 清理临时目录 |
|
|
|
rm -rf /tmp/project_app_temp |
|
|
|
REPO_URL="http://8.137.125.67:4000/Swt29/Project_app.git" |
|
|
|
BRANCH="BOSS" |
|
|
|
|
|
|
|
# 测试仓库连接 |
|
|
|
if ! git ls-remote $REPO_URL &> /dev/null; then |
|
|
|
echo "警告: 无法连接到Gitea仓库 $REPO_URL (端口4000拒绝连接)" |
|
|
|
echo "请检查网络连接和仓库地址是否正确" |
|
|
|
echo "如果仓库不可用,将使用本地已有代码继续部署..." |
|
|
|
else |
|
|
|
if [ ! -d /opt/project_app/.git ]; then |
|
|
|
# 如果目录不存在.git文件夹,检查目录是否为空 |
|
|
|
if [ "$(ls -A /opt/project_app)" ]; then |
|
|
|
# 目录不为空,创建临时目录克隆后复制文件 |
|
|
|
echo "目标目录已存在且不为空,使用临时目录克隆代码..." |
|
|
|
git clone -b $BRANCH $REPO_URL /tmp/project_app_temp |
|
|
|
if [ $? -eq 0 ]; then |
|
|
|
# 复制.git文件夹和所有文件 |
|
|
|
cp -r /tmp/project_app_temp/. /opt/project_app/ |
|
|
|
# 清理临时目录 |
|
|
|
rm -rf /tmp/project_app_temp |
|
|
|
else |
|
|
|
echo "警告: 克隆仓库失败,将使用本地已有代码继续部署..." |
|
|
|
fi |
|
|
|
else |
|
|
|
# 目录为空,直接克隆仓库 |
|
|
|
git clone -b $BRANCH $REPO_URL /opt/project_app |
|
|
|
fi |
|
|
|
cd /opt/project_app |
|
|
|
else |
|
|
|
# 目录为空,直接克隆仓库 |
|
|
|
git clone http://8.137.125.67:4000/Swt29/Project_app.git /opt/project_app |
|
|
|
# 如果目录已存在.git文件夹,则更新代码 |
|
|
|
cd /opt/project_app |
|
|
|
# 使用fast-forward方式更新,避免分支冲突 |
|
|
|
git fetch origin $BRANCH |
|
|
|
git merge --ff-only FETCH_HEAD || { |
|
|
|
echo "分支冲突,重置本地分支到远程最新版本..." |
|
|
|
git reset --hard origin/$BRANCH |
|
|
|
} |
|
|
|
fi |
|
|
|
cd /opt/project_app |
|
|
|
else |
|
|
|
# 如果目录已存在.git文件夹,则更新代码 |
|
|
|
cd /opt/project_app |
|
|
|
# 使用fast-forward方式更新,避免分支冲突 |
|
|
|
git fetch origin BOSS |
|
|
|
git merge --ff-only FETCH_HEAD || { |
|
|
|
echo "分支冲突,重置本地分支到远程最新版本..." |
|
|
|
git reset --hard origin/BOSS |
|
|
|
} |
|
|
|
|
|
|
|
# 确保有必要的配置文件 |
|
|
|
echo "确保配置文件存在..." |
|
|
|
git fetch origin $BRANCH |
|
|
|
git checkout origin/$BRANCH -- docker-compose.yml Dockerfile 2>/dev/null || true |
|
|
|
fi |
|
|
|
|
|
|
|
# 确保有必要的配置文件 |
|
|
|
echo "确保配置文件存在..." |
|
|
|
git fetch origin BOSS |
|
|
|
git checkout origin/BOSS -- docker-compose.yml Dockerfile 2>/dev/null || true |
|
|
|
|
|
|
|
# 检查.env文件是否存在 |
|
|
|
echo "检查环境变量配置..." |
|
|
|
if [ ! -f .env ]; then |
|
|
|
|