Files
embyx/.github/workflows/release.yml
T
juneix 28b4529ab8 v1.1
2026-04-21 19:00:33 +08:00

192 lines
6.0 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 APK 构建
# 触发条件:
# 1. 每次推送代码到 main 分支:自动构建并更新名为 "latest" 的 Release (Rolling Release)
# 2. 推送 v* 格式的 tag(如 v1.0):自动构建并发布正式 Release
# 3. 手动触发(workflow_dispatch):手动指定 tag 发布
on:
push:
branches: [ main ]
tags: [ 'v*' ]
workflow_dispatch:
inputs:
release_tag:
description: '上传到已有标签 (如 v1.0)'
required: true
default: 'v1.0'
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
permissions:
contents: write
jobs:
# ── 中文版 APK 构建 ──────────────────────────────────────────────────────────
build-android-zh:
name: Build EmbyX-zh APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
# 动态生成中文版 capacitor.config.jsonwebDir 指向 zh/ 目录)
- name: Create capacitor.config.json (zh)
run: |
cat > capacitor.config.json << 'EOF'
{
"appId": "juneix.embyx",
"appName": "EmbyX",
"webDir": "zh",
"server": {
"androidScheme": "http",
"cleartext": true
},
"plugins": {
"SplashScreen": {
"launchAutoHide": true,
"backgroundColor": "#000000",
"androidScaleType": "CENTER",
"showSpinner": false
}
}
}
EOF
- name: Install Capacitor dependencies
run: npm install
- name: Add & Sync Android Platform
run: |
npx cap add android
npx cap sync android
# 运行补丁脚本:替换图标、注册屏保、添加全屏模式
- name: Patch Android Project (zh)
run: python .github/patch_android.py --lang zh
- name: Build Debug APK
run: |
cd android
chmod +x gradlew
./gradlew assembleDebug
- name: Rename to EmbyX-zh.apk
run: mv android/app/build/outputs/apk/debug/app-debug.apk EmbyX-zh.apk
- name: Upload Artifact
uses: actions/upload-artifact@v7
with:
name: embyx-zh
path: EmbyX-zh.apk
# ── 英文版 APK 构建 ──────────────────────────────────────────────────────────
build-android-en:
name: Build EmbyX-en APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
# 动态生成英文版 capacitor.config.jsonwebDir 指向 en/ 目录)
- name: Create capacitor.config.json (en)
run: |
cat > capacitor.config.json << 'EOF'
{
"appId": "juneix.embyx",
"appName": "EmbyX",
"webDir": "en",
"server": {
"androidScheme": "http",
"cleartext": true
},
"plugins": {
"SplashScreen": {
"launchAutoHide": true,
"backgroundColor": "#000000",
"androidScaleType": "CENTER",
"showSpinner": false
}
}
}
EOF
- name: Install Capacitor dependencies
run: npm install
- name: Add & Sync Android Platform
run: |
npx cap add android
npx cap sync android
# 运行补丁脚本:替换图标、注册屏保、添加全屏模式
- name: Patch Android Project (en)
run: python .github/patch_android.py --lang en
- name: Build Debug APK
run: |
cd android
chmod +x gradlew
./gradlew assembleDebug
- name: Rename to EmbyX-en.apk
run: mv android/app/build/outputs/apk/debug/app-debug.apk EmbyX-en.apk
- name: Upload Artifact
uses: actions/upload-artifact@v7
with:
name: embyx-en
path: EmbyX-en.apk
# ── 发布 Release ─────────────────────────────────────────────────────────────
# 当推送到 main 分支、打 v* 标签或手动触发时执行
release:
name: Create GitHub Release
needs: [build-android-zh, build-android-en]
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v7
- name: Verify APK files exist
run: |
ls -R
test -f "embyx-zh/EmbyX-zh.apk"
test -f "embyx-en/EmbyX-en.apk"
- name: Create Release
uses: softprops/action-gh-release@v3
with:
# 如果是 main 分支,固定使用 preview 标签以便滚动更新
tag_name: ${{ github.ref_name == 'main' && 'preview' || (github.event_name == 'workflow_dispatch' && inputs.release_tag || github.ref_name) }}
name: ${{ github.ref_name == 'main' && 'EmbyX Preview' || (github.event_name == 'workflow_dispatch' && inputs.release_tag || github.ref_name) }}
prerelease: ${{ github.ref_name == 'main' }}
draft: false
fail_on_unmatched_files: true
files: |
embyx-zh/EmbyX-zh.apk
embyx-en/EmbyX-en.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}