diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml
index fb64956e..13c24388 100644
--- a/.gitea/workflows/dev.yml
+++ b/.gitea/workflows/dev.yml
@@ -1,11 +1,132 @@
-run-name: ${{ gitea.actor }} 打包并构建镜像 🚀
+run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀
on:
push:
branches:
- master
jobs:
- build-and-push:
+ 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
+
+
+ aliyun-public
+ https://maven.aliyun.com/repository/public
+
+
+
+
+
+ multi-repo
+
+
+ EOF
+
+ - 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 package -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"
+ 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
+
+ - name: 构建通用模块(仅本地使用,不上传)
+ run: |
+ COMMON_MODULES=(
+ "ruoyi-common"
+ "ruoyi-api"
+ "ruoyi-common-bom"
+ "ruoyi-common-alibaba-bom"
+ "ruoyi-api-bom"
+ )
+
+ for module in "${COMMON_MODULES[@]}"; do
+ MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml"
+ if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then
+ echo "警告:模块 $module 不存在,跳过"
+ continue
+ fi
+
+ 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
strategy:
matrix:
@@ -30,80 +151,51 @@ jobs:
- name: 配置环境变量
run: |
- # 配置JDK和Maven绝对路径
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"
- exit 1
- fi
- if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then
- echo "错误:Maven不存在于 $MAVEN_HOME"
- 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 -version
- mvn -v
- - name: 配置Maven仓库(仅华为镜像)
- run: |
- mkdir -p ~/.m2
- cat > ~/.m2/settings.xml << EOF
-
-
- $HOME/.m2/repository
-
-
- huawei
- https://mirrors.huaweicloud.com/repository/maven/
- *
-
-
-
- EOF
-
- - name: 执行mvn clean package打包
+ - name: 构建服务模块
run: |
SERVICE_NAME="${{ matrix.service }}"
- POM_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml"
-
- # 检查POM文件是否存在
- if [ ! -f "$POM_PATH" ]; then
- echo "错误:$SERVICE_NAME 的POM文件不存在于 $POM_PATH"
+ SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml"
+ if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then
+ echo "错误:服务 $SERVICE_NAME 的POM文件不存在"
exit 1
fi
- # 直接执行打包命令
- mvn clean package -U -DskipTests -f "$POM_PATH"
-
- # 验证打包结果
- echo "=== 打包产物 ==="
- ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/"
+ "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH"
- name: 配置Docker Buildx
uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
- - name: 登录容器仓库
+ - name: 登录到容器仓库
uses: http://git.missmoc.top/mocheng/login-action@v3
with:
registry: ${{ secrets.REGISTRY_URL }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASS }}
- - name: 构建并推送Docker镜像
+ - name: 确定Dockerfile路径
+ id: dockerfile-path
+ run: |
+ SERVICE_NAME="${{ matrix.service }}"
+ DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile"
+
+ if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then
+ echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT
+ else
+ echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT
+ fi
+
+ - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR)
uses: http://git.missmoc.top/mocheng/build-push-action@v5
with:
context: "${GITHUB_WORKSPACE}"
- file: "${{ matrix.service }}/Dockerfile"
+ file: ${{ steps.dockerfile-path.outputs.dockerfile_path }}
tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }}
push: true
cache-from: type=gha