From 7bbf011dcfaeb9cf9fcdbee0c131173209833b28 Mon Sep 17 00:00:00 2001
From: bichangxiong <3057647414@qq.com>
Date: Thu, 14 Aug 2025 01:11:07 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev.yml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitea/workflows/dev.yml | 173 ++++++++++++++++++++++++---------------
1 file changed, 109 insertions(+), 64 deletions(-)
diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml
index 05b91aa3..889a5863 100644
--- a/.gitea/workflows/dev.yml
+++ b/.gitea/workflows/dev.yml
@@ -1,43 +1,47 @@
-run-name: ${{ gitea.actor }} is building with parent POM first 🚀
+run-name: ${{ gitea.actor }} 构建主POM并分模块打包 🚀
on:
push:
branches:
- master
jobs:
+ # 第一步:构建主POM(父模块)并安装到本地仓库
build-parent-pom:
runs-on: ubuntu
steps:
- - name: Checkout Repository
+ - name: 拉取代码仓库
uses: http://git.missmoc.top/mocheng/checkout@v4
- - name: Set up environment (JDK + Maven)
+ - name: 配置环境变量(使用绝对路径)
run: |
- # 配置 JDK(确认路径正确,与实际安装一致)
- echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV
- echo "$JAVA_HOME/bin" >> $GITHUB_PATH
+ # 配置JDK绝对路径(必须与runner中实际路径一致)
+ export JAVA_HOME="/java17/java17"
+ # 配置Maven绝对路径(必须与runner中实际路径一致)
+ export MAVEN_HOME="/maven/apache-maven-3.9.11"
- # 修复 Maven 路径:先确认 runner 中 Maven 的实际安装位置
- # 常见路径:/usr/local/maven、/opt/maven、/maven 等,根据实际情况修改
- MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 关键:替换为 runner 中 Maven 的真实路径
-
- # 验证 Maven 可执行文件是否存在
- if [ ! -f "$MAVEN_ACTUAL_PATH/bin/mvn" ]; then
- echo "Error: Maven 可执行文件不存在于 $MAVEN_ACTUAL_PATH/bin/mvn"
+ # 验证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
- # 配置 Maven 环境变量
- echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV
- echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH
+ # 写入环境变量(确保后续步骤可用)
+ 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 "Java 版本:"
- java -version
- echo "Maven 版本:"
- mvn -v # 此处若仍报错,说明路径确实错误,需重新确认
+ # 验证环境配置
+ echo "=== JDK版本 ==="
+ "$JAVA_HOME/bin/java" -version
+ echo "=== Maven版本 ==="
+ "$MAVEN_HOME/bin/mvn" -v
- - name: Configure Maven settings
+ - name: 配置Maven仓库(本地优先)
run: |
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << EOF
@@ -51,6 +55,8 @@ jobs:
local-repo
file://${user.home}/.m2/repository
+ true
+ true
dromara-releases
@@ -65,47 +71,72 @@ jobs:
EOF
- - name: Build and install parent POM
+ - name: 构建并安装主POM(父模块)
run: |
- MAIN_POM_PATH="./pom.xml"
- if [ ! -f "$MAIN_POM_PATH" ]; then
- echo "Error: 主POM文件不存在"
+ # 主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
- mvn clean install -N -U -DskipTests -f $MAIN_POM_PATH
+
+ # 使用绝对路径执行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: Checkout Repository
+ - name: 拉取代码仓库
uses: http://git.missmoc.top/mocheng/checkout@v4
- - name: Set up environment
+ - name: 配置环境变量(绝对路径)
run: |
- echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV
+ 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
- MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致
- echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV
- echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH
- mvn -v # 验证
+ echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
+ echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
- - name: Build and install common modules
+ - name: 构建并安装通用模块
run: |
+ # 通用模块列表(根据实际项目结构调整)
COMMON_MODULES=(
"ruoyi-common"
"ruoyi-api"
"ruoyi-common-bom"
+ "ruoyi-common-alibaba-bom"
+ "ruoyi-api-bom"
)
+
for module in "${COMMON_MODULES[@]}"; do
- POM_PATH="./$module/pom.xml"
- if [ -f "$POM_PATH" ]; then
- mvn clean install -U -DskipTests -f $POM_PATH
- else
- echo "Warning: 模块 $module 不存在"
+ # 模块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文件不存在,跳过"
+ 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"/
done
+ # 第三步:分服务构建镜像并上传(依赖通用模块)
build-and-push-services:
needs: build-common-modules
runs-on: ubuntu
@@ -127,55 +158,69 @@ jobs:
- ruoyi-sentinel-dashboard
- ruoyi-snailjob-server
steps:
- - name: Checkout Repository
+ - name: 拉取代码仓库
uses: http://git.missmoc.top/mocheng/checkout@v4
- - name: Set up environment
+ - name: 配置环境变量(绝对路径)
run: |
- echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV
+ 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
- MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致
- echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV
- echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH
- mvn -v # 验证
+ echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
+ echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
- - name: Build service with Maven
+ - name: 构建服务模块
run: |
- SERVICE_PATH="${{ matrix.service }}"
- POM_PATH="./$SERVICE_PATH/pom.xml"
- if [ ! -f "$POM_PATH" ]; then
- echo "Error: POM文件不存在"
+ 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
- mvn clean package -U -DskipTests -f $POM_PATH
+
+ # 使用Maven绝对路径执行打包命令
+ "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH"
+
+ # 验证构建产物
+ echo "=== 构建产物 ==="
+ ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/"
- - name: Set Up Docker Buildx
+ - name: 配置Docker Buildx
uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
- - name: Login to Registry
+ - name: 登录到容器仓库
uses: http://git.missmoc.top/mocheng/login-action@v3
with:
registry: ${{ secrets.REGISTRY_URL }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASS }}
- - name: Determine Dockerfile Path
+ - name: 确定Dockerfile路径
id: dockerfile-path
run: |
- SERVICE_PATH="${{ matrix.service }}"
- DOCKERFILE="$SERVICE_PATH/Dockerfile"
- if [ -f "$DOCKERFILE" ]; then
- echo "dockerfile_path=$DOCKERFILE" >> $GITHUB_OUTPUT
+ 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
+ echo "使用Dockerfile:$DOCKERFILE_ABSOLUTE_PATH"
else
- echo "dockerfile_path=./Dockerfile" >> $GITHUB_OUTPUT
+ echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT
+ echo "使用根目录Dockerfile:${GITHUB_WORKSPACE}/Dockerfile"
fi
- - name: Build and Push Docker Image
+ - name: 构建并推送Docker镜像
uses: http://git.missmoc.top/mocheng/build-push-action@v5
with:
- context: .
+ context: "${GITHUB_WORKSPACE}"
file: ${{ steps.dockerfile-path.outputs.dockerfile_path }}
tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }}
push: true
cache-from: type=gha
- cache-to: type=gha,mode=max
\ No newline at end of file
+ cache-to: type=gha,mode=max
+
\ No newline at end of file