Files
android-ci-demo/.gitea/workflows/android-release.yml
T
amos e9d4587428
Android Build / build (push) Successful in 1m2s
Android Release / release (push) Successful in 1m21s
feat: 使用 Gitea API 直接创建 Release(替代 actions/create-release)
2026-06-02 13:04:11 +08:00

99 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
# 验证输出(未签名的 APK)
echo "=== 编译完成 ==="
ls -lh app/build/outputs/apk/release/
# 重命名 APK 包含版本号(使用未签名的 APK)
VERSION=${GITHUB_REF#refs/tags/}
cp app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-${VERSION}-unsigned.apk
echo "APK_NAME=app-${VERSION}-unsigned.apk" >> $GITHUB_ENV
echo "APK_VERSION=$VERSION" >> $GITHUB_ENV
echo "⚠️ 注意:生成的是未签名 APK,仅用于测试。生产环境请配置签名。"
- name: Create Gitea Release
id: create_release
run: |
VERSION=${GITHUB_REF#refs/tags/}
echo "Creating release: $VERSION"
# 使用 Gitea API 创建 Release
RESPONSE=$(curl -s -X POST "https://gitea.kg8.net/api/v1/repos/amos/android-ci-demo/releases" \
-H "Authorization: token ${{ secrets.ACTIONS_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"$VERSION\",
\"name\": \"Release $VERSION\",
\"body\": \"## 自动发布的 Release\n\n- 版本:$VERSION\n- 提交:${{ github.sha }}\n\n### 变更\n${{ github.event.head_commit.message }}\",
\"draft\": false,
\"prerelease\": false
}")
echo "Response: $RESPONSE"
# 提取 upload_url
UPLOAD_URL=$(echo $RESPONSE | grep -o '"upload_url":"[^"]*"' | cut -d'"' -f4)
echo "Upload URL: $UPLOAD_URL"
echo "UPLOAD_URL=$UPLOAD_URL" >> $GITHUB_ENV
- name: Upload Release APK
run: |
echo "Uploading APK: ${{ env.APK_NAME }}"
echo "Upload URL: ${{ env.UPLOAD_URL }}"
# 上传 APK 到 Release
curl -s -X POST "${{ env.UPLOAD_URL }}?name=${{ env.APK_NAME }}" \
-H "Authorization: token ${{ secrets.ACTIONS_TOKEN }}" \
-H "Content-Type: application/vnd.android.package-archive" \
--data-binary "@app/build/outputs/apk/release/${{ env.APK_NAME }}"
echo "✅ APK uploaded successfully!"