From c75e4d8b1c3453c8f4aefa843b28ffc50c04f986 Mon Sep 17 00:00:00 2001 From: Jason Brazeal Date: Thu, 3 Sep 2026 14:21:46 -0700 Subject: [PATCH] Add Linux ARM64 legs to the workshop release workflows The workshop installers are now built for ARM64 Linux. A `linux-arm` entry joins the build and test matrices of `release-workshop.yml` and the build matrix of `nightly.yml` on `ubuntu-22.04-arm`, and the release steps collect and verify its signed artifacts. - The `Add the Rust target` steps now fire only on `macos-arm` and `macos-intel`; the Tauri package installs and `Install and check (Linux)` use `startsWith(matrix.name, 'linux')` so both Linux legs run them. - The minisign signature check expects `workshop-linux-arm/*.AppImage.sig` under `linux-aarch64`; the evergreen dist gains `PromptForge-arm64.deb` and `PromptForge-arm64.AppImage`. - The nightly workflow has no install-test job, so its arm64 installers publish untested, as the existing legs do. --- .github/workflows/nightly.yml | 10 +++++++--- .github/workflows/release-workshop.yml | 22 +++++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 5581f5ff..9f80e2f8 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -113,7 +113,7 @@ jobs: name: ${{ env.ARTIFACT }} path: ${{ env.ARTIFACT }}.tar.gz - # -- Workshop: Windows, macOS ARM, macOS Intel, Linux ------------------ + # -- Workshop: Windows, macOS ARM, macOS Intel, Linux x64 and ARM64 ---- workshop: needs: check @@ -138,6 +138,10 @@ jobs: runs-on: ubuntu-22.04 args: "" suffix: linux-x64 + - name: linux-arm + runs-on: ubuntu-22.04-arm + args: "" + suffix: linux-arm64 runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 @@ -147,7 +151,7 @@ jobs: uses: ./.github/actions/hf-model-cache - name: Add the Rust target - if: matrix.name != 'windows' && matrix.name != 'linux' + if: matrix.name == 'macos-arm' || matrix.name == 'macos-intel' run: rustup target add aarch64-apple-darwin x86_64-apple-darwin - uses: actions/setup-node@v4 @@ -163,7 +167,7 @@ jobs: run: npm ci - name: Install Tauri system packages - if: matrix.name == 'linux' + if: startsWith(matrix.name, 'linux') run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev diff --git a/.github/workflows/release-workshop.yml b/.github/workflows/release-workshop.yml index d1a7ec03..20ee5812 100644 --- a/.github/workflows/release-workshop.yml +++ b/.github/workflows/release-workshop.yml @@ -2,10 +2,10 @@ name: Release Workshop run-name: PromptForge Workshop ${{ github.ref_name }} # Builds the PromptForge Workshop desktop installers for Windows, macOS -# (ARM and Intel), and Linux on a workshop-v* tag, tests each -# installer on a clean machine of the same kind, and publishes one GitHub -# Release with all five installers and a SHA256SUMS file. A failed test -# means no release. +# (ARM and Intel), and Linux (x86_64 and ARM64) on a workshop-v* tag, +# tests each installer on a clean machine of the same kind, and publishes +# one GitHub Release with all seven installers and a SHA256SUMS file. +# A failed test means no release. # # Platform code signing is still absent. Tauri updater bundles are signed # independently with the release minisign key. @@ -47,6 +47,9 @@ jobs: - name: linux runs-on: ubuntu-22.04 args: "" + - name: linux-arm + runs-on: ubuntu-22.04-arm + args: "" runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 @@ -57,7 +60,7 @@ jobs: uses: Swatinem/rust-cache@v2 - name: Add the Rust target - if: matrix.name != 'windows' && matrix.name != 'linux' + if: matrix.name == 'macos-arm' || matrix.name == 'macos-intel' run: rustup target add aarch64-apple-darwin x86_64-apple-darwin - uses: actions/setup-node@v4 @@ -73,7 +76,7 @@ jobs: run: npm ci - name: Install Tauri system packages - if: matrix.name == 'linux' + if: startsWith(matrix.name, 'linux') run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev @@ -146,6 +149,8 @@ jobs: runs-on: macos-15-intel - name: linux runs-on: ubuntu-22.04 + - name: linux-arm + runs-on: ubuntu-22.04-arm runs-on: ${{ matrix.runs-on }} steps: - name: Download the installers @@ -233,7 +238,7 @@ jobs: [ "$size" -lt 3000000 ] || { echo "app.js is unexpectedly large ($size bytes)"; exit 1; } - name: Install and check (Linux) - if: matrix.name == 'linux' + if: startsWith(matrix.name, 'linux') run: | set -e sudo apt-get update @@ -316,6 +321,7 @@ jobs: ("darwin-aarch64", "workshop-macos-arm", "*.app.tar.gz.sig"), ("darwin-x86_64", "workshop-macos-intel", "*.app.tar.gz.sig"), ("linux-x86_64", "workshop-linux", "*.AppImage.sig"), + ("linux-aarch64", "workshop-linux-arm", "*.AppImage.sig"), ]: folder = root / artifact signed = [ @@ -382,6 +388,8 @@ jobs: copy_one "workshop-macos-intel/*.dmg" PromptForge-x64.dmg copy_one "workshop-linux/*.deb" PromptForge.deb copy_one "workshop-linux/*.AppImage" PromptForge.AppImage + copy_one "workshop-linux-arm/*.deb" PromptForge-arm64.deb + copy_one "workshop-linux-arm/*.AppImage" PromptForge-arm64.AppImage ls -l dist/evergreen - name: Publish the stable updater pointer