Release: cross-compile Linux aarch64 binary for Docker/OrbStack
macOS runners can cross-compile to Linux via messense/macos-cross-toolchains,
avoiding the need for a separate Linux runner job.

Assisted-by: Claude Opus 4.6 via pi
change otprtrpylnykyovkqoqsyvyykmyzksku
commit c64abb8e024e21d9682f35ead1b7f6d807ab6f3c
author Alpha Chen <alpha@kejadlen.dev>
date
parent yosmsyvp
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 33c9a57..53354a5 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,13 +28,23 @@ jobs:
           SHORT_SHA=$(git rev-parse --short HEAD)
           echo "version=${CALVER}+${SHORT_SHA}" >> $GITHUB_OUTPUT
 
-      - name: Build
+      - name: Build macOS
         env:
           RANGER_VERSION: ${{ steps.version.outputs.version }}
         run: |
           cargo build --release
           tar -czf ranger-aarch64-apple-darwin.tar.gz -C target/release ranger
 
+      - name: Build Linux (for Docker/OrbStack)
+        env:
+          RANGER_VERSION: ${{ steps.version.outputs.version }}
+        run: |
+          rustup target add aarch64-unknown-linux-gnu
+          brew install messense/macos-cross-toolchains/aarch64-unknown-linux-gnu
+          export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-unknown-linux-gnu-gcc
+          cargo build --release --target aarch64-unknown-linux-gnu
+          tar -czf ranger-aarch64-unknown-linux-gnu.tar.gz -C target/aarch64-unknown-linux-gnu/release ranger
+
       - name: Publish
         run: |
           VERSION="${{ steps.version.outputs.version }}"
@@ -44,6 +54,7 @@ jobs:
           gh release create "v${VERSION}" \
             --title "v${VERSION}" \
             --generate-notes \
-            ranger-aarch64-apple-darwin.tar.gz
+            ranger-aarch64-apple-darwin.tar.gz \
+            ranger-aarch64-unknown-linux-gnu.tar.gz
         env:
           GH_TOKEN: ${{ github.token }}