From 2167a7a10b2cb9edd29aae45f75c8c491948b851 Mon Sep 17 00:00:00 2001 From: "jif2.zhang" Date: Mon, 14 Sep 2026 10:44:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E6=9B=BF=E6=8D=A2=E9=9C=80=E9=89=B4?= =?UTF-8?q?=E6=9D=83=E7=9A=84=20mise=20action=20=E4=B8=BA=20setup-node+rus?= =?UTF-8?q?tup,=20=E4=BF=AE=E5=A4=8D=20android=20CI=20=E7=A7=92=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .gitea/workflows/android-build.yml | 62 ++++++++++++++++++------------ 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/.gitea/workflows/android-build.yml b/.gitea/workflows/android-build.yml index e12467a..290c097 100644 --- a/.gitea/workflows/android-build.yml +++ b/.gitea/workflows/android-build.yml @@ -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" \ No newline at end of file + bash scripts/upload-r2.sh "$APK_PATH" data/android/wardrobe.apk \ No newline at end of file