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
|
- name: Checkout
|
||||||
uses: https://gitea.com/actions/checkout@v4
|
uses: https://gitea.com/actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup mise
|
- name: Setup Node
|
||||||
uses: https://gitea.com/actions/mise@v2
|
uses: https://gitea.com/actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
tools: "node:24.21.0,rust:stable"
|
node-version: '22'
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Setup JDK 17
|
- name: Setup JDK 17
|
||||||
uses: https://gitea.com/actions/setup-java@v4
|
uses: https://gitea.com/actions/setup-java@v4
|
||||||
@@ -40,6 +39,18 @@ jobs:
|
|||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: '17'
|
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 ----------
|
# ---------- 尽量复用 Android SDK ----------
|
||||||
# 优先复用 runner 预装的 SDK (/usr/local/lib/android/sdk), 其次命中 CI 缓存,
|
# 优先复用 runner 预装的 SDK (/usr/local/lib/android/sdk), 其次命中 CI 缓存,
|
||||||
# 最后才重新下载。NDK 不在预装中, 单独用缓存复用。
|
# 最后才重新下载。NDK 不在预装中, 单独用缓存复用。
|
||||||
@@ -73,9 +84,9 @@ jobs:
|
|||||||
uses: https://gitea.com/actions/cache@v4
|
uses: https://gitea.com/actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.mise
|
~/.cargo
|
||||||
~/.local/share/mise
|
~/.rustup
|
||||||
key: mise-rust-android-v1-${{ runner.os }}
|
key: rustup-stable-android-v2-${{ runner.os }}
|
||||||
|
|
||||||
- name: Cache Tauri cargo target
|
- name: Cache Tauri cargo target
|
||||||
uses: https://gitea.com/actions/cache@v4
|
uses: https://gitea.com/actions/cache@v4
|
||||||
@@ -84,30 +95,33 @@ jobs:
|
|||||||
key: tauri-target-android-${{ runner.os }}
|
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'
|
if: steps.sdk.outputs.found == '' || steps.cache-ndk.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
if [ -z "${ANDROID_ROOT:-}" ]; then
|
set -euo pipefail
|
||||||
export ANDROID_HOME="$HOME/android-sdk"
|
BASE="${ANDROID_ROOT:-$HOME/android-sdk}"
|
||||||
mkdir -p "$ANDROID_HOME/cmdline-tools"
|
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 update
|
||||||
sudo apt-get install -y --no-install-recommends unzip
|
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
|
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/
|
unzip -q /tmp/cmdline-tools.zip -d /tmp/
|
||||||
mv /tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
|
mv /tmp/cmdline-tools "$COMMANDLINE_TOOLS"
|
||||||
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"
|
|
||||||
fi
|
fi
|
||||||
# NDK (cache miss 或首页 SDK 未含 NDK 时安装到 ~/android-sdk/ndk)
|
export PATH="$COMMANDLINE_TOOLS/bin:$BASE/platform-tools:$PATH"
|
||||||
if [ ! -d "$HOME/android-sdk/ndk/${{ env.NDK_VERSION }}" ]; then
|
yes | sdkmanager --licenses >/dev/null || true
|
||||||
export ANDROID_HOME="${ANDROID_ROOT:-$HOME/android-sdk}"
|
# 复用预装但缺平台时补装; 全新安装时补全组件
|
||||||
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
|
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 }}"
|
sdkmanager --install "ndk;${{ env.NDK_VERSION }}"
|
||||||
|
else
|
||||||
|
echo "NDK ${{ env.NDK_VERSION }} already present"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Add Android Rust targets
|
- name: Add Android Rust targets
|
||||||
@@ -206,4 +220,4 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
APK_PATH: ${{ steps.apk.outputs.path }}
|
APK_PATH: ${{ steps.apk.outputs.path }}
|
||||||
run: |
|
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