From 66c5de6f18e49cab0e7f18f96b21ef538f269be5 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 17 Jan 2026 03:05:49 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BA=86Gradle=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 65 ++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e12a3802c..6ca2db3a0 100644 --- a/.github/workflows/test.yml +++ b/.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: