feat: 添加自动发布 workflow(tag push 时创建 Release 并上传 APK)
Android Build / build (push) Successful in 40s

This commit is contained in:
amos
2026-06-02 12:47:01 +08:00
parent cda20467b5
commit ef3a9ce9e1
2 changed files with 117 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
name: Android Release
on:
push:
tags:
- 'v*' # 监听所有 v 开头的标签(如 v1.0.0, v2.1.3
jobs:
release:
runs-on: android
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java 17
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "=== 使用 Java 17 ==="
java -version
- name: Build Release APK
run: |
# 设置 Android SDK 环境变量
export ANDROID_HOME=/opt/android-sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/34.0.0:$PATH
# 使用 ARM64 版本的 aapt2(来自 lzhiyong/android-sdk-tools
export CUSTOM_AAPT2_PATH=/usr/bin/aapt2
echo "=== 使用 ARM64 aapt2 (35.0.2) ==="
# 创建 gradle.properties 配置
echo "org.gradle.jvmargs=-Xmx2g -XX:+UseG1GC -XX:MaxMetaspaceSize=512m" >> gradle.properties
echo "org.gradle.daemon=false" >> gradle.properties
# 使用自定义 aapt2 路径
echo "android.aapt2FromMavenOverride=$CUSTOM_AAPT2_PATH" >> gradle.properties
# 编译 Release APK(带签名配置)
echo "=== 开始编译 Release APK ==="
gradle assembleRelease \
--no-daemon \
--stacktrace \
--no-watch-fs \
--no-configuration-cache \
--no-build-cache \
-Dfile.encoding=UTF-8
# 验证输出
echo "=== 编译完成 ==="
ls -lh app/build/outputs/apk/release/
# 重命名 APK 包含版本号
VERSION=${GITHUB_REF#refs/tags/}
cp app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/app-${VERSION}.apk
echo "APK_NAME=app-${VERSION}.apk" >> $GITHUB_ENV
- name: Create Gitea Release
id: create_release
uses: actions/create-release@v1
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
body: |
## 自动发布的 Release
- 版本:${{ github.ref }}
- 提交:${{ github.sha }}
- 编译时间:${{ github.event.head_commit.timestamp }}
### 变更日志
${{ github.event.head_commit.message }}
- name: Upload Release APK
uses: actions/upload-release-asset@v1
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/release/${{ env.APK_NAME }}
asset_name: ${{ env.APK_NAME }}
asset_content_type: application/vnd.android.package-archive
+29
View File
@@ -0,0 +1,29 @@
# Android Release
# app/release-signing.gradle 并修改实际路径
android {
...
signingConfigs {
release {
// 方式 1: 使用环境变量(推荐用于 CI/CD
storeFile file(System.getenv("KEYSTORE_PATH") ?: "keystore/release.jks")
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
// 方式 2: 直接配置(仅本地开发,不要提交到 Git)
// storeFile file('keystore/release.jks')
// storePassword 'your-store-password'
// keyAlias 'your-key-alias'
// keyPassword 'your-key-password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}