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

This commit is contained in:
HapeLee
2026-01-17 06:40:19 +08:00
parent a5a88fb7b2
commit 66c5de6f18
+35 -30
View File
@@ -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: