[优化] 优化了Gradle相关代码
This commit is contained in:
+35
-30
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user