diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml index 26d35b79f..9e4a16620 100644 --- a/.github/actions/build-electron/action.yml +++ b/.github/actions/build-electron/action.yml @@ -86,6 +86,7 @@ runs: APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }} WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }} TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }} + TARGET_ARCH: ${{ inputs.arch }} run: pnpm run --filter desktop electron-forge:make --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }} # Add DMG signing step diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 16dec7492..6a0a38752 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,6 +30,19 @@ jobs: image: win-signing shell: cmd forge_platform: win32 + # Exclude ARM64 Linux from default matrix to use native runner + exclude: + - arch: arm64 + os: + name: linux + # Add ARM64 Linux with native ubuntu-24.04-arm runner for better-sqlite3 compatibility + include: + - arch: arm64 + os: + name: linux + image: ubuntu-24.04-arm + shell: bash + forge_platform: linux runs-on: ${{ matrix.os.image }} steps: - uses: actions/checkout@v5 diff --git a/scripts/electron-rebuild.mts b/scripts/electron-rebuild.mts index 48ede8cdd..6ed8360e7 100644 --- a/scripts/electron-rebuild.mts +++ b/scripts/electron-rebuild.mts @@ -24,13 +24,15 @@ function rebuildNativeDependencies(projectRoot: string) { process.exit(1); } - console.log(`Rebuilding ${projectRoot} with ${electronVersion}...`); + const targetArch = process.env.TARGET_ARCH || process.arch; + console.log(`Rebuilding ${projectRoot} with ${electronVersion} for ${targetArch}...`); const resolvedPath = resolve(projectRoot); rebuild({ projectRootPath: resolvedPath, buildPath: resolvedPath, electronVersion, + arch: targetArch, force: true }); }