From 43f07b739653018b820bedce6a2b02fd3d45deda Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:22:44 +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 | 252 +++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 115 deletions(-) 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}"