Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions .github/workflows/build-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ on:
jobs:
build:
name: Build - macOS (${{ matrix.arch }})
runs-on: macos-latest
runs-on: macos-latest-large

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

GitHub Actions macos-latest-large macos-latest-xlarge runner specifications architecture Apple Silicon Intel

💡 Result:

GitHub Actions macOS larger runners: specs + CPU architecture

Workflow label Runner “size” CPU / Arch vCPU RAM SSD Notes
macos-latest-large Large Intel x64 12 30 GB 14 GB -latest-large” tracks the latest GA Intel large image. [1]
macos-latest-xlarge XLarge Apple Silicon arm64 (M2 / M2 Pro) 5 14 GB 14 GB Includes GPU hardware acceleration (8‑core GPU mentioned for the M2 Pro rollout). [1][2]

What “latest” maps to (images)

  • In the actions/runner-images repo, macOS 15 (Intel) is labeled macos-latest-large / macos-15-large (and also macos-15-intel). [3]
  • macOS 15 Arm64 is labeled macos-latest / macos-15 / macos-15-xlarge. [3]

Sources

[1] GitHub Docs — “Larger runners reference” (macOS large/xlarge table + specs). (docs.github.com)
[2] GitHub Changelog (July 2025) — XLarge upgraded to M2 Pro, 5‑core CPU, 8‑core GPU, 14 GB RAM, 14 GB storage. (github.blog)
[3] actions/runner-images — “Available Images” (label ↔ image mapping, including macos-latest-large and macos-15-xlarge). (github.com)

Citations:


🏁 Script executed:

# Check the matrix configuration in the workflow file
head -50 .github/workflows/build-desktop.yml | tail -20

Repository: superset-sh/superset

Length of output: 437


Runner architecture mismatch: macos-latest-large is Intel x86_64, but the build targets arm64 Apple Silicon.

The workflow uses macos-latest-large (Intel x64 runner) but the matrix specifies arch: [arm64]. On GitHub Actions, macos-latest-large is an Intel runner, while macos-latest-xlarge is the Apple Silicon (arm64) runner required for native arm64 builds. Building an arm64 application on an Intel runner will fail or produce incorrect output.

Proposed fix
-    runs-on: macos-latest-large
+    runs-on: macos-latest-xlarge
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: macos-latest-large
runs-on: macos-latest-xlarge
🤖 Prompt for AI Agents
In @.github/workflows/build-desktop.yml at line 34, The workflow uses an Intel
runner "macos-latest-large" while the build matrix targets arm64; change the
runner to an Apple Silicon macOS runner (e.g., replace "macos-latest-large" with
"macos-latest-xlarge" or another arm64-capable runner) or adjust the matrix to
use x64 so runner and target architecture match; ensure the string
"macos-latest-large" is replaced wherever the job's runs-on is defined and that
the matrix entry "arch: [arm64]" remains consistent with the selected runner.

environment: production

strategy:
Expand Down Expand Up @@ -96,15 +96,25 @@ jobs:
STREAMS_URL: ${{ secrets.STREAMS_URL }}
run: bun run compile:app

- name: Build Electron app
- name: Prepare native modules & resources
working-directory: apps/desktop
run: |
bun run copy:native-modules
bun run download:claude

- name: Build & sign app bundle
working-directory: apps/desktop
env:
CSC_LINK: ${{ secrets.MAC_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.MAC_CERTIFICATE_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: bun run package -- --publish never --config ${{ inputs.electron_builder_config }}
run: npx electron-builder --dir --arm64 --config ${{ inputs.electron_builder_config }}

- name: Package (DMG & ZIP)
working-directory: apps/desktop
run: npx electron-builder --prepackaged "release/mac-arm64/$(ls release/mac-arm64/)" --config ${{ inputs.electron_builder_config }} --publish never

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fragile: parsing ls output to resolve the .app bundle path.

If release/mac-arm64/ contains any unexpected files (.DS_Store, build metadata, etc.), ls will return multiple entries and break the --prepackaged argument. Use a glob instead for robustness.

Proposed fix — use a glob to match the .app bundle
-        run: npx electron-builder --prepackaged "release/mac-arm64/$(ls release/mac-arm64/)" --config ${{ inputs.electron_builder_config }} --publish never
+        run: npx electron-builder --prepackaged release/mac-arm64/*.app --config ${{ inputs.electron_builder_config }} --publish never

If the app name contains spaces and the glob must be quoted, use find instead:

        run: npx electron-builder --prepackaged "$(find release/mac-arm64 -maxdepth 1 -name '*.app' -print -quit)" --config ${{ inputs.electron_builder_config }} --publish never
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
run: npx electron-builder --prepackaged "release/mac-arm64/$(ls release/mac-arm64/)" --config ${{ inputs.electron_builder_config }} --publish never
run: npx electron-builder --prepackaged release/mac-arm64/*.app --config ${{ inputs.electron_builder_config }} --publish never
🤖 Prompt for AI Agents
In @.github/workflows/build-desktop.yml at line 117, The workflow step that runs
npx electron-builder uses a fragile command that parses ls output to build the
--prepackaged path; replace that with a robust glob/find that selects the .app
bundle (e.g., match '*.app' in release/mac-arm64 and quote the result) so the
--prepackaged argument always points to the single .app (update the run line
that currently contains npx electron-builder --prepackaged
"release/mac-arm64/$(ls release/mac-arm64/)" to use a quoted glob or a find
command that prints the first '*.app' match).


- name: Upload DMG artifact
uses: actions/upload-artifact@v4
Expand Down
Loading