From 1a65736fb8bff2fd9975f34eacdef641444bb3d8 Mon Sep 17 00:00:00 2001 From: Marcus Rehbock Date: Fri, 7 Aug 2026 19:33:54 -0700 Subject: [PATCH] CI: reuse persistent runner caches (npm/gradle/android-sdk volumes) Node lives in the npm volume, cmdline-tools download is guarded, and sdkmanager no-ops when packages are present. First run seeds the volumes; later runs skip all toolchain downloads. Co-Authored-By: Claude Fable 5 --- .gitea/workflows/release.yml | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index c1641ec..9cfda9a 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -20,25 +20,33 @@ jobs: git fetch -q --depth 1 "https://git.rehbock.xyz/${{ github.repository }}.git" "${{ github.sha }}" git checkout -q FETCH_HEAD - - name: Install Node 22 + # /root/.npm and /root/.gradle and /root/android-sdk are persistent named + # volumes (act_runner config.yaml) — downloads below only happen on a cold cache. + - name: Install Node 22 (cached in npm volume) run: | - curl -sLo /tmp/node.tar.xz https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz - mkdir -p /opt/node && tar xJf /tmp/node.tar.xz -C /opt/node --strip-components=1 - echo "/opt/node/bin" >> "$GITHUB_PATH" - /opt/node/bin/node --version + NODE_DIR="$HOME/.npm/_node-v22.14.0" + if [ ! -x "$NODE_DIR/bin/node" ]; then + curl -sLo /tmp/node.tar.xz https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz + mkdir -p "$NODE_DIR" && tar xJf /tmp/node.tar.xz -C "$NODE_DIR" --strip-components=1 + fi + echo "$NODE_DIR/bin" >> "$GITHUB_PATH" + "$NODE_DIR/bin/node" --version - name: npm ci run: npm ci --no-audit --no-fund - - name: Install Android SDK + NDK + - name: Install Android SDK + NDK (cached volume) run: | - mkdir -p "$HOME/android-sdk/cmdline-tools" - curl -sLo /tmp/ct.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip - unzip -q /tmp/ct.zip -d /tmp - mv /tmp/cmdline-tools "$HOME/android-sdk/cmdline-tools/latest" - SDKMAN="$HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager" - yes | "$SDKMAN" --sdk_root="$HOME/android-sdk" --licenses >/dev/null 2>&1 || true - "$SDKMAN" --sdk_root="$HOME/android-sdk" \ + SDK="$HOME/android-sdk" + SDKMAN="$SDK/cmdline-tools/latest/bin/sdkmanager" + if [ ! -x "$SDKMAN" ]; then + mkdir -p "$SDK/cmdline-tools" + curl -sLo /tmp/ct.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip + unzip -q /tmp/ct.zip -d /tmp + mv /tmp/cmdline-tools "$SDK/cmdline-tools/latest" + fi + yes | "$SDKMAN" --sdk_root="$SDK" --licenses >/dev/null 2>&1 || true + "$SDKMAN" --sdk_root="$SDK" \ "platform-tools" "platforms;android-36" "build-tools;36.0.0" \ "ndk;27.1.12297006" "cmake;3.22.1" >/dev/null