diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml
index a2305c1c..0d2e7861 100644
--- a/.gitea/workflows/dev.yml
+++ b/.gitea/workflows/dev.yml
@@ -1,103 +1,138 @@
-run-name: ${{ gitea.actor }} 构建主POM并分模块打包 🚀
+run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀
on:
push:
branches:
- master
jobs:
- # 第一步:构建主POM(父模块)并安装到本地仓库
build-parent-pom:
- runs-on: ubuntu
- steps:
- - name: 拉取代码仓库
- uses: http://git.missmoc.top/mocheng/checkout@v4
-
- - name: 配置环境变量(使用绝对路径)
- run: |
- # 配置JDK绝对路径(必须与runner中实际路径一致)
- export JAVA_HOME="/java17/java17"
- # 配置Maven绝对路径(必须与runner中实际路径一致)
- export MAVEN_HOME="/maven/apache-maven-3.9.11"
-
- # 验证JDK和Maven可执行文件是否存在
- if [ ! -f "$JAVA_HOME/bin/java" ]; then
- echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java"
- exit 1
- fi
- if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then
- echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn"
- exit 1
- fi
-
- # 写入环境变量(确保后续步骤可用)
- echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
- echo "$JAVA_HOME/bin" >> $GITHUB_PATH
- echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
- echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
-
- # 验证环境配置
- echo "=== JDK版本 ==="
- "$JAVA_HOME/bin/java" -version
- echo "=== Maven版本 ==="
- "$MAVEN_HOME/bin/mvn" -v
-
- - name: 配置Maven仓库(本地优先)
- run: |
- mkdir -p ~/.m2
- cat > ~/.m2/settings.xml << EOF
-
-
- /root/.m2/repository
-
-
- local-first
-
-
- local-repo
- file:///root/.m2/repository
- true
- true
-
-
- dromara-releases
- https://maven.dromara.org/repository/releases/
-
-
-
-
-
- local-first
-
-
- EOF
-
- - name: 构建并安装主POM(父模块)
- run: |
- # 主POM绝对路径
- MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml"
- echo "主POM路径:$MAIN_POM_ABSOLUTE_PATH"
-
- if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then
- echo "错误:主POM文件不存在于 $MAIN_POM_ABSOLUTE_PATH"
- exit 1
- fi
-
- # 使用绝对路径执行Maven命令,仅构建父模块(-N)
- "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"
-
- # 验证主POM是否安装成功
- echo "=== 验证主POM安装 ==="
- ls -la ~/.m2/repository/org/dromara/ruoyi-cloud-plus/
-
- # 第二步:构建通用模块(依赖主POM)
- build-common-modules:
- needs: build-parent-pom
runs-on: ubuntu
steps:
- name: 拉取代码仓库
uses: http://git.missmoc.top/mocheng/checkout@v4
- name: 配置环境变量(绝对路径)
+ run: |
+ export JAVA_HOME="/java17/java17"
+ export MAVEN_HOME="/maven/apache-maven-3.9.11"
+
+ if [ ! -f "$JAVA_HOME/bin/java" ]; then
+ echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java"
+ exit 1
+ fi
+ if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then
+ echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn"
+ exit 1
+ fi
+
+ echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
+ echo "$JAVA_HOME/bin" >> $GITHUB_PATH
+ echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
+ echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
+
+ "$JAVA_HOME/bin/java" -version
+ "$MAVEN_HOME/bin/mvn" -v
+
+ - name: 配置Maven仓库
+ run: |
+ mkdir -p ~/.m2
+ cat > ~/.m2/settings.xml << EOF
+
+
+ $HOME/.m2/repository
+
+
+ multi-repo
+
+
+ local-repo
+ file://$HOME/.m2/repository
+
+
+ dromara-releases
+ https://maven.dromara.org/repository/releases/
+
+
+ aliyun-public
+ https://maven.aliyun.com/repository/public
+
+
+
+
+
+ multi-repo
+
+
+ EOF
+
+ - name: 手动安装必要BOM依赖
+ run: |
+ mkdir -p /tmp/maven-dependencies
+
+ declare -A BOM_ARTIFACTS=(
+ ["ruoyi-common-alibaba-bom"]="2.4.0"
+ ["ruoyi-common-bom"]="2.4.0"
+ ["ruoyi-api-bom"]="2.4.0"
+ )
+
+ for artifact in "${!BOM_ARTIFACTS[@]}"; do
+ version=${BOM_ARTIFACTS[$artifact]}
+ group_id="org.dromara"
+ local_path="$HOME/.m2/repository/${group_id//.//}/$artifact/$version/$artifact-$version.pom"
+
+ if [ -f "$local_path" ]; then
+ echo "本地已存在 $artifact:$version,跳过"
+ continue
+ fi
+
+ repos=(
+ "https://maven.dromara.org/repository/releases"
+ "https://maven.aliyun.com/repository/public"
+ )
+
+ downloaded=false
+ for repo in "${repos[@]}"; do
+ url="$repo/${group_id//.//}/$artifact/$version/$artifact-$version.pom"
+ if wget -q -O "/tmp/maven-dependencies/$artifact-$version.pom" "$url"; then
+ "$MAVEN_HOME/bin/mvn" install:install-file \
+ -Dfile="/tmp/maven-dependencies/$artifact-$version.pom" \
+ -DgroupId="$group_id" \
+ -DartifactId="$artifact" \
+ -Dversion="$version" \
+ -Dpackaging=pom
+ downloaded=true
+ break
+ fi
+ done
+ done
+
+ - name: 构建主POM(仅本地安装,不上传)
+ run: |
+ MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml"
+ if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then
+ echo "错误:主POM文件不存在"
+ exit 1
+ fi
+
+ retries=3
+ count=0
+ until "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do
+ count=$((count + 1))
+ if [ $count -ge $retries ]; then
+ echo "错误:主POM构建失败"
+ exit 1
+ fi
+ sleep 10
+ done
+
+ build-common-modules:
+ needs: build-parent-pom
+ runs-on: ubuntu
+ steps:
+ - name: 拉取代码仓库
+ uses: http://git.missmoc.top/mocheng/checkout@v4
+
+ - name: 配置环境变量
run: |
export JAVA_HOME="/java17/java17"
export MAVEN_HOME="/maven/apache-maven-3.9.11"
@@ -106,9 +141,8 @@ jobs:
echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
- - name: 构建并安装通用模块
+ - name: 构建通用模块(仅本地使用,不上传)
run: |
- # 通用模块列表(根据实际项目结构调整)
COMMON_MODULES=(
"ruoyi-common"
"ruoyi-api"
@@ -118,25 +152,24 @@ jobs:
)
for module in "${COMMON_MODULES[@]}"; do
- # 模块POM的绝对路径
MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml"
- echo "=== 构建模块:$module ==="
- echo "POM路径:$MODULE_POM_ABSOLUTE_PATH"
-
if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then
- echo "警告:模块 $module 的POM文件不存在,跳过"
+ echo "警告:模块 $module 不存在,跳过"
continue
fi
- # 使用Maven绝对路径执行命令
- "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"
-
- # 验证模块是否安装成功
- MODULE_GROUP_ID="org.dromara"
- ls -la ~/.m2/repository/"${MODULE_GROUP_ID//.//}"/"$module"/
+ retries=3
+ count=0
+ until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do
+ count=$((count + 1))
+ if [ $count -ge $retries ]; then
+ echo "错误:模块 $module 构建失败"
+ exit 1
+ fi
+ sleep 10
+ done
done
- # 第三步:分服务构建镜像并上传(依赖通用模块)
build-and-push-services:
needs: build-common-modules
runs-on: ubuntu
@@ -161,7 +194,7 @@ jobs:
- name: 拉取代码仓库
uses: http://git.missmoc.top/mocheng/checkout@v4
- - name: 配置环境变量(绝对路径)
+ - name: 配置环境变量
run: |
export JAVA_HOME="/java17/java17"
export MAVEN_HOME="/maven/apache-maven-3.9.11"
@@ -170,25 +203,16 @@ jobs:
echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
- - name: 构建服务模块
+ - name: 构建服务模块(仅用于镜像构建,不上传JAR)
run: |
SERVICE_NAME="${{ matrix.service }}"
- # 服务POM的绝对路径
SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml"
- echo "=== 构建服务:$SERVICE_NAME ==="
- echo "POM路径:$SERVICE_POM_ABSOLUTE_PATH"
-
if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then
echo "错误:服务 $SERVICE_NAME 的POM文件不存在"
exit 1
fi
- # 使用Maven绝对路径执行打包命令
"$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH"
-
- # 验证构建产物
- echo "=== 构建产物 ==="
- ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/"
- name: 配置Docker Buildx
uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
@@ -208,13 +232,11 @@ jobs:
if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then
echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT
- echo "使用Dockerfile:$DOCKERFILE_ABSOLUTE_PATH"
else
echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT
- echo "使用根目录Dockerfile:${GITHUB_WORKSPACE}/Dockerfile"
fi
- - name: 构建并推送Docker镜像
+ - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR)
uses: http://git.missmoc.top/mocheng/build-push-action@v5
with:
context: "${GITHUB_WORKSPACE}"