168 lines
5.7 KiB
YAML
168 lines
5.7 KiB
YAML
name: Android APK 构建
|
|
|
|
# 触发条件:
|
|
# 1. 推送到 main 分支:自动构建并更新 preview 滚动版本
|
|
# 2. 推送 v* 格式 tag:构建正式版本
|
|
# 3. 手动触发:指定 tag 发布
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
tags: [ 'v*' ]
|
|
workflow_dispatch:
|
|
inputs:
|
|
release_tag:
|
|
description: '发布标签 (如 v1.0)'
|
|
required: true
|
|
default: 'v1.0'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build-and-release:
|
|
name: Build & Release EmbyX APKs
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# 手动 clone,避免从 github.com 下载 actions/checkout 超时
|
|
- name: Checkout
|
|
run: |
|
|
git init
|
|
git remote add origin \
|
|
http://oauth2:${{ secrets.GITHUB_TOKEN }}@192.168.1.66:3000/adminym/embyx.git
|
|
git fetch --depth=1 origin ${{ github.sha }}
|
|
git checkout FETCH_HEAD
|
|
|
|
- name: Setup JDK 21 & Python3
|
|
run: |
|
|
apt-get update -qq
|
|
apt-get install -y wget gnupg python3
|
|
wget -qO- https://packages.adoptium.net/artifactory/api/gpg/key/public \
|
|
| gpg --dearmor > /usr/share/keyrings/adoptium.gpg
|
|
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] \
|
|
https://packages.adoptium.net/artifactory/deb bullseye main" \
|
|
> /etc/apt/sources.list.d/adoptium.list
|
|
apt-get update -qq
|
|
apt-get install -y temurin-21-jdk
|
|
java -version
|
|
|
|
- name: Setup Node.js 22
|
|
run: |
|
|
npm install -g n
|
|
n 22
|
|
hash -r
|
|
node --version
|
|
|
|
# ── 构建中文版 APK ──────────────────────────────────────────────────────
|
|
- name: Build zh APK
|
|
run: |
|
|
cat > capacitor.config.json << 'EOF'
|
|
{
|
|
"appId": "juneix.embyx",
|
|
"appName": "EmbyX",
|
|
"webDir": "zh",
|
|
"backgroundColor": "#000000",
|
|
"server": {
|
|
"androidScheme": "http",
|
|
"cleartext": true
|
|
},
|
|
"plugins": {
|
|
"SplashScreen": {
|
|
"launchAutoHide": true,
|
|
"backgroundColor": "#000000",
|
|
"androidScaleType": "CENTER",
|
|
"showSpinner": false
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
npm install
|
|
npx cap add android
|
|
npx cap sync android
|
|
python3 .github/patch_android.py --lang zh
|
|
cd android
|
|
chmod +x gradlew
|
|
./gradlew assembleDebug
|
|
mv app/build/outputs/apk/debug/app-debug.apk ../EmbyX-zh.apk
|
|
cd ..
|
|
|
|
# ── 构建英文版 APK(复用已下载的 Gradle 缓存)──────────────────────────
|
|
- name: Build en APK
|
|
run: |
|
|
rm -rf android
|
|
cat > capacitor.config.json << 'EOF'
|
|
{
|
|
"appId": "juneix.embyx",
|
|
"appName": "EmbyX",
|
|
"webDir": "en",
|
|
"backgroundColor": "#000000",
|
|
"server": {
|
|
"androidScheme": "http",
|
|
"cleartext": true
|
|
},
|
|
"plugins": {
|
|
"SplashScreen": {
|
|
"launchAutoHide": true,
|
|
"backgroundColor": "#000000",
|
|
"androidScaleType": "CENTER",
|
|
"showSpinner": false
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
npm install
|
|
npx cap add android
|
|
npx cap sync android
|
|
python3 .github/patch_android.py --lang en
|
|
cd android
|
|
chmod +x gradlew
|
|
./gradlew assembleDebug
|
|
mv app/build/outputs/apk/debug/app-debug.apk ../EmbyX-en.apk
|
|
cd ..
|
|
|
|
# ── 发布到 Gitea Release(全程用本地 API,不访问 GitHub)───────────────
|
|
- name: Create Release
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
TAG="${{ inputs.release_tag }}"
|
|
RNAME="${{ inputs.release_tag }}"
|
|
PRE=false
|
|
elif [ "${{ github.ref_name }}" = "main" ]; then
|
|
TAG="preview"
|
|
RNAME="EmbyX Preview"
|
|
PRE=true
|
|
else
|
|
TAG="${{ github.ref_name }}"
|
|
RNAME="${{ github.ref_name }}"
|
|
PRE=false
|
|
fi
|
|
|
|
API="http://192.168.1.66:3000/api/v1/repos/adminym/embyx"
|
|
AUTH="Authorization: token ${{ secrets.GITHUB_TOKEN }}"
|
|
|
|
# 删除旧的同名 release(用于 preview 滚动更新)
|
|
OLD_ID=$(curl -sf "$API/releases/tags/$TAG" -H "$AUTH" \
|
|
| python3 -c "import sys,json; print(json.load(sys.stdin).get('id',''))" \
|
|
2>/dev/null || echo "")
|
|
if [ -n "$OLD_ID" ] && [ "$OLD_ID" != "None" ]; then
|
|
curl -sf -X DELETE "$API/releases/$OLD_ID" -H "$AUTH" || true
|
|
curl -sf -X DELETE "$API/tags/$TAG" -H "$AUTH" || true
|
|
fi
|
|
|
|
# 创建新 release
|
|
RID=$(curl -sf -X POST "$API/releases" \
|
|
-H "$AUTH" -H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"$RNAME\",\"prerelease\":$PRE,\"draft\":false}" \
|
|
| python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
|
|
|
|
echo "Release ID: $RID"
|
|
|
|
# 上传中文版 APK
|
|
curl -sf -X POST "$API/releases/$RID/assets?name=EmbyX-zh.apk" \
|
|
-H "$AUTH" -F "attachment=@EmbyX-zh.apk"
|
|
|
|
# 上传英文版 APK
|
|
curl -sf -X POST "$API/releases/$RID/assets?name=EmbyX-en.apk" \
|
|
-H "$AUTH" -F "attachment=@EmbyX-en.apk"
|
|
|
|
echo "发布完成: http://192.168.1.66:3000/adminym/embyx/releases/tag/$TAG"
|