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

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