From edf514b25d98b4eede2bb0c27fe7e0d3222e8cef Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:40:47 +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 | 194 +++++++++++++++++++++++++++++---------- 1 file changed, 143 insertions(+), 51 deletions(-) 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