fix(ci): 替换需鉴权的 mise action 为 setup-node+rustup, 修复 android CI 秒失败
- 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:
@@ -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
|
||||
Reference in New Issue
Block a user