Просмотр исходного кода

[优化] 优化了Gradle相关代码

HapeLee 9 месяцев назад
Родитель
Сommit
66c5de6f18
1 измененных файлов с 35 добавлено и 30 удалено
  1. 35 30
      .github/workflows/test.yml

+ 35 - 30
.github/workflows/test.yml

@@ -35,7 +35,7 @@ jobs:
     outputs:
       versionL: ${{ steps.set-ver.outputs.full_version_name }}
       version: ${{ steps.set-ver.outputs.current_version }}
-      build_number: ${{ steps.set-ver.outputs.build_number }}
+      version_code: ${{ steps.set-ver.outputs.version_code }}
       latest_tag: ${{ steps.set-ver.outputs.last_tag }}
       is_release: ${{ steps.set-ver.outputs.is_release }}
     steps:
@@ -48,11 +48,11 @@ jobs:
         run: |
           PROPERTIES_FILE="./app/version.properties"
           if [[ ! -f "$PROPERTIES_FILE" ]]; then
-            echo "错误:version.properties 文件不存在于 $PROPERTIES_FILE"
+            echo "错误:version.properties 文件不存在"
             exit 1
           fi
           
-          # --- 1. 读取基础版本和发布标志 ---
+          # --- 1. 读取基础配置 ---
           MAJOR=$(grep 'VERSION_MAJOR' "$PROPERTIES_FILE" | cut -d'=' -f2 | tr -d '[:space:]')
           MINOR=$(grep 'VERSION_MINOR' "$PROPERTIES_FILE" | cut -d'=' -f2 | tr -d '[:space:]')
           PATCH=$(grep 'VERSION_PATCH' "$PROPERTIES_FILE" | cut -d'=' -f2 | tr -d '[:space:]')
@@ -60,50 +60,55 @@ jobs:
           
           CURRENT_VERSION="$MAJOR.$MINOR.$PATCH"
           
-          # --- 2. 获取全局构建号 (使用全量 Commit 计数) ---
-          NEW_BUILD_NUM=$(git rev-list --count HEAD)
+          # --- 2. 计算 Android versionCode ---
+          TOTAL_COMMITS=$(git rev-list --count HEAD)
+          VERSION_CODE=$((TOTAL_COMMITS))
+          
+          # --- 3. 确定版本类型和 Beta 序列号 ---
+          IS_RELEASE="false"
+          VERSION_SUFFIX_NAME=""
           
-          # --- 3. 确定版本类型和后缀 ---
           if [[ "${RELEASE_FLAG}" == "0" ]]; then
-            # 正式版 (VERSION_SUFFIX=0)
+            # 正式版逻辑
             IS_RELEASE="true"
-            VERSION_SUFFIX_NAME=""
-          
-            # 查找上一个正式版 Tag 作为 Changelog 起点 (排除带有 beta 的 tag)
+            # 日志起点:找上一个不带 beta 的 tag
             LAST_TAG_FOR_LOG=$(git tag --list --sort=-committerdate | grep -v 'beta' | head -n 1)
-            if [ -z "$LAST_TAG_FOR_LOG" ]; then
-                LAST_TAG_FOR_LOG=$(git rev-list --max-parents=0 HEAD) # 找不到则从第一条 commit 开始
-            fi
-            echo "版本类型: 正式版 (Release), 版本名: $CURRENT_VERSION"
-          
           else
-            # 预发布版 (BETA)
-            IS_RELEASE="false"
-            # 后缀使用当前总 commit 数,例如: 3.26.4-beta.1250
-            VERSION_SUFFIX_NAME="-beta.$NEW_BUILD_NUM"
+            # 预发布版逻辑 (计算 beta.X)
+            # 查找匹配当前主版本号的最新 beta tag
+            LAST_BETA_TAG=$(git tag --list "$CURRENT_VERSION-beta.*" --sort=-committerdate | head -n 1)
           
-            # Changelog 起点设为上一个任意 Tag
-            LAST_TAG_FOR_LOG=$(git tag --sort=-committerdate | head -n 1)
-            if [ -z "$LAST_TAG_FOR_LOG" ]; then
-                LAST_TAG_FOR_LOG=$(git rev-list --max-parents=0 HEAD)
+            if [[ "$LAST_BETA_TAG" =~ -beta\.([0-9]+) ]]; then
+              BETA_NUM=${BASH_REMATCH[1]}
+              NEW_BETA_NUM=$((BETA_NUM + 1))
+            else
+              NEW_BETA_NUM=1
             fi
-            echo "版本类型: 预发布版 (Pre-release), 构建号(Commit数): $NEW_BUILD_NUM"
+          
+            VERSION_SUFFIX_NAME="-beta.$NEW_BETA_NUM"
+            # 日志起点:上一个任意 tag
+            LAST_TAG_FOR_LOG=$(git tag --sort=-committerdate | head -n 1)
+          fi
+          
+          # 如果完全没找到 Tag,则从第一个 commit 开始
+          if [ -z "$LAST_TAG_FOR_LOG" ]; then
+            LAST_TAG_FOR_LOG=$(git rev-list --max-parents=0 HEAD)
           fi
           
-          # --- 4. 构造最终版本信息 ---
           FULL_VERSION_NAME="${CURRENT_VERSION}${VERSION_SUFFIX_NAME}"
           
-          # --- 5. 设置输出供后续作业使用 ---
+          # --- 4. 设置输出 ---
           echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
           echo "full_version_name=$FULL_VERSION_NAME" >> $GITHUB_OUTPUT
-          echo "build_number=$NEW_BUILD_NUM" >> $GITHUB_OUTPUT
+          echo "version_code=$VERSION_CODE" >> $GITHUB_OUTPUT
           echo "last_tag=$LAST_TAG_FOR_LOG" >> $GITHUB_OUTPUT
           echo "is_release=$IS_RELEASE" >> $GITHUB_OUTPUT
           
           echo "-------------------------------"
-          echo "Final Version: $FULL_VERSION_NAME"
-          echo "Build Number: $NEW_BUILD_NUM"
+          echo "Full Name: $FULL_VERSION_NAME"
+          echo "Version Code: $VERSION_CODE"
           echo "Is Release: $IS_RELEASE"
+          echo "Log Start: $LAST_TAG_FOR_LOG"
           echo "-------------------------------"
 
   build:
@@ -120,7 +125,7 @@ jobs:
       # 使用 prepare job 的输出
       VERSION: ${{ needs.prepare.outputs.version }}
       VERSIONL: ${{ needs.prepare.outputs.versionL }}
-      BUILD_NUMBER: ${{ needs.prepare.outputs.build_number }}
+      BUILD_NUMBER: ${{ needs.prepare.outputs.version_code }}
     steps:
       - uses: actions/checkout@v5
         with: