fix(ci): 替换需鉴权的 mise action 为 setup-node+rustup, 修复 android CI 秒失败
Android Build & Publish / build-android (push) Failing after 15m21s
Docker Build and Push / build-image (push) Successful in 2m25s

- gitea.com/actions/mise 不存在/需要鉴权, 克隆即 Unauthorized, 导致 job 02:05 秒失败
- 改为 gitea.com/actions/setup-node@v4 + 手动 rustup 安装
- Ensure SDK/NDK 步骤加固: 预装 SDK 复用 + 权限兜底 + 按需安装
- Rust 缓存路径改为 ~/.cargo + ~/.rustup
- APK 固定上传到 data/android/wardrobe.apk
This commit is contained in:
jif2.zhang
2026-09-14 10:44:36 +08:00
parent fc279c20ff
commit 2167a7a10b
+38 -24
View File
@@ -28,11 +28,10 @@ jobs:
- name: Checkout
uses: https://gitea.com/actions/checkout@v4
- name: Setup mise
uses: https://gitea.com/actions/mise@v2
- name: Setup Node
uses: https://gitea.com/actions/setup-node@v4
with:
tools: "node:24.21.0,rust:stable"
cache: true
node-version: '22'
- name: Setup JDK 17
uses: https://gitea.com/actions/setup-java@v4
@@ -40,6 +39,18 @@ jobs:
distribution: temurin
java-version: '17'
- name: Setup Rust toolchain
# 不用 gitea.com/actions/mise (该公共 action 需鉴权), 直接装 rustup
run: |
set -euo pipefail
if ! command -v rustup >/dev/null 2>&1; then
curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
fi
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
"$HOME/.cargo/bin/rustup" default stable
"$HOME/.cargo/bin/rustc" --version
"$HOME/.cargo/bin/cargo" --version
# ---------- 尽量复用 Android SDK ----------
# 优先复用 runner 预装的 SDK (/usr/local/lib/android/sdk), 其次命中 CI 缓存,
# 最后才重新下载。NDK 不在预装中, 单独用缓存复用。
@@ -73,9 +84,9 @@ jobs:
uses: https://gitea.com/actions/cache@v4
with:
path: |
~/.mise
~/.local/share/mise
key: mise-rust-android-v1-${{ runner.os }}
~/.cargo
~/.rustup
key: rustup-stable-android-v2-${{ runner.os }}
- name: Cache Tauri cargo target
uses: https://gitea.com/actions/cache@v4
@@ -84,30 +95,33 @@ jobs:
key: tauri-target-android-${{ runner.os }}
# ---------- 安装缺失组件 (仅未复用/未命中时) ----------
- name: Ensure Android NDK
- name: Ensure Android SDK & NDK
if: steps.sdk.outputs.found == '' || steps.cache-ndk.outputs.cache-hit != 'true'
run: |
if [ -z "${ANDROID_ROOT:-}" ]; then
export ANDROID_HOME="$HOME/android-sdk"
mkdir -p "$ANDROID_HOME/cmdline-tools"
set -euo pipefail
BASE="${ANDROID_ROOT:-$HOME/android-sdk}"
COMMANDLINE_TOOLS="$BASE/cmdline-tools/latest"
echo "SDK base: $BASE"
mkdir -p "$BASE/cmdline-tools"
# 预装 SDK 目录常归 root, 兜底给当前用户写权限
sudo chown -R "$(whoami)" "$BASE" 2>/dev/null || true
if [ ! -x "$COMMANDLINE_TOOLS/bin/sdkmanager" ]; then
sudo apt-get update
sudo apt-get install -y --no-install-recommends unzip
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline-tools.zip
unzip -q /tmp/cmdline-tools.zip -d /tmp/
mv /tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
yes | sdkmanager --licenses >/dev/null || true
sdkmanager --install \
"platforms;android-36" \
"build-tools;36.0.0" \
"platform-tools"
echo "ANDROID_HOME=$ANDROID_HOME" >> "$GITHUB_ENV"
mv /tmp/cmdline-tools "$COMMANDLINE_TOOLS"
fi
# NDK (cache miss 或首页 SDK 未含 NDK 时安装到 ~/android-sdk/ndk)
if [ ! -d "$HOME/android-sdk/ndk/${{ env.NDK_VERSION }}" ]; then
export ANDROID_HOME="${ANDROID_ROOT:-$HOME/android-sdk}"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
export PATH="$COMMANDLINE_TOOLS/bin:$BASE/platform-tools:$PATH"
yes | sdkmanager --licenses >/dev/null || true
# 复用预装但缺平台时补装; 全新安装时补全组件
if [ ! -d "$BASE/platforms/android-36" ]; then
sdkmanager --install "platforms;android-36" "build-tools;36.0.0" "platform-tools"
fi
if [ ! -d "$BASE/ndk/${{ env.NDK_VERSION }}" ]; then
sdkmanager --install "ndk;${{ env.NDK_VERSION }}"
else
echo "NDK ${{ env.NDK_VERSION }} already present"
fi
- name: Add Android Rust targets
@@ -206,4 +220,4 @@ jobs:
env:
APK_PATH: ${{ steps.apk.outputs.path }}
run: |
bash scripts/upload-r2.sh "$APK_PATH"
bash scripts/upload-r2.sh "$APK_PATH" data/android/wardrobe.apk