Fix Linux build PATH and add ARM64 container support
Some checks failed
Build App / build-linux (push) Failing after 2s
Build App / build-macos (push) Failing after 11s
Build App / build-windows (push) Successful in 3m38s

Linux app build: cargo was not in PATH for subsequent steps after
shell-based install. Fixed by adding $HOME/.cargo/bin to GITHUB_PATH
(persists across steps) and setting it in the job-level env. Also
removed the now-unnecessary per-step PATH override in the macOS job.

Container build: added QEMU setup and platforms: linux/amd64,linux/arm64
to produce a multi-arch manifest. The Dockerfile already uses
arch-aware commands (dpkg --print-architecture, uname -m) so it
builds natively on both architectures. This fixes the "no matching
manifest for linux/arm64/v8" error on Apple Silicon Macs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-01 17:16:45 -08:00
parent 19d4cbce27
commit b795e27251
2 changed files with 12 additions and 7 deletions

View File

@@ -19,6 +19,8 @@ env:
jobs: jobs:
build-linux: build-linux:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
PATH: /home/runner/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -62,20 +64,20 @@ jobs:
- name: Install Rust stable - name: Install Rust stable
run: | run: |
if command -v rustup &>/dev/null; then if command -v rustup >/dev/null 2>&1; then
echo "Rust already installed: $(rustc --version)" echo "Rust already installed: $(rustc --version)"
rustup update stable rustup update stable
rustup default stable rustup default stable
else else
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
. "$HOME/.cargo/env"
fi fi
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
rustc --version rustc --version
cargo --version cargo --version
- name: Install Node.js - name: Install Node.js
run: | run: |
if command -v node &>/dev/null; then if command -v node >/dev/null 2>&1; then
echo "Node.js already installed: $(node --version)" echo "Node.js already installed: $(node --version)"
else else
echo "Installing Node.js 22..." echo "Installing Node.js 22..."
@@ -169,13 +171,14 @@ jobs:
- name: Install Rust stable - name: Install Rust stable
run: | run: |
if command -v rustup &>/dev/null; then if command -v rustup >/dev/null 2>&1; then
echo "Rust already installed: $(rustc --version)"
rustup update stable rustup update stable
rustup default stable rustup default stable
else else
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
. "$HOME/.cargo/env"
fi fi
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
rustup target add aarch64-apple-darwin x86_64-apple-darwin rustup target add aarch64-apple-darwin x86_64-apple-darwin
rustc --version rustc --version
cargo --version cargo --version
@@ -190,8 +193,6 @@ jobs:
- name: Build Tauri app (universal) - name: Build Tauri app (universal)
working-directory: ./app working-directory: ./app
env:
PATH: ${{ format('{0}/.cargo/bin:{1}', env.HOME, env.PATH) }}
run: npx tauri build --target universal-apple-darwin run: npx tauri build --target universal-apple-darwin
- name: Collect artifacts - name: Collect artifacts

View File

@@ -21,6 +21,9 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -36,6 +39,7 @@ jobs:
with: with:
context: ./container context: ./container
file: ./container/Dockerfile file: ./container/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ gitea.event_name == 'push' }} push: ${{ gitea.event_name == 'push' }}
tags: | tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest