Skip to content

ci(release): switch macOS Intel runner from macos-13 to macos-15#42

Merged
Cmochance merged 1 commit into
mainfrom
fix/macos-intel-runner
May 19, 2026
Merged

ci(release): switch macOS Intel runner from macos-13 to macos-15#42
Cmochance merged 1 commit into
mainfrom
fix/macos-intel-runner

Conversation

@Cmochance
Copy link
Copy Markdown
Owner

@Cmochance Cmochance commented May 19, 2026

Summary

PR #41 used os: macos-13 for the macOS Intel build matrix entry. GitHub fully retired the free macos-13 runner on 2025-12-04 (actions/runner-images#13046), so the Intel job queued for 24h with no runner pickup and was auto-cancelled — see workflow run 26013731604.

Switching to os: macos-15, which is the current free Intel runner image.

How I verified the runner arch

  • actions/runner-images ships separate readmes: macos-15-Readme.md vs macos-15-arm64-Readme.md.
  • macos-15 readme: ChromeDriver at chromedriver-mac-x64, JAVA_HOME_*_X64 — Intel.
  • macos-15-arm64 readme: same tools under chromedriver-mac-arm64, JAVA_HOME_*_arm64 — Apple Silicon.
  • [macOS] macos-15 (x86) runner is excruciatingly slow actions/runner-images#12545 explicitly tags macos-15 as the "x86" runner.

Known caveat

actions/runner-images#12545 (still open, 2025-07-08) reports the macos-15 Intel runner is significantly slower than the retired macos-13 was. Release builds will take longer (estimate +5–10 min per Intel matrix entry) but should still finish well under the 6h per-job ceiling.

Test plan

  • PR CI green on Linux.
  • After merge, run workflow_dispatch on main and confirm:
    • Build macos-x64 job actually starts (no infinite queue).
    • All three matrix entries (macos-arm64, macos-x64, windows-x86_64) finish green.
    • Artifacts include _x64.dmg and _x64.pkg.
  • Next real tag push produces all five assets in the draft release.

Open in Devin Review

GitHub retired the free `macos-13` runner on 2025-12-04
(actions/runner-images#13046). PR #41's Intel build queued for 24h
without a runner and got auto-cancelled.

`macos-15` (without the `-arm64` suffix) is the current free Intel
runner image — confirmed via the actions/runner-images readme: tool
paths under `chromedriver-mac-x64` / `JAVA_HOME_*_X64`. `macos-15-arm64`
remains the explicit Apple Silicon variant.

Note: actions/runner-images#12545 reports the `macos-15` Intel runner
is slower than `macos-13` was; release builds will take longer but
still finish under the per-job ceiling.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4698de48a4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

dist/*.pkg
- label: macos-x64
os: macos-13
os: macos-15
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Use the Intel macOS 15 runner label

For the macos-x64 matrix entry, macos-15 is not the Intel label: GitHub's hosted-runner reference lists macos-15 with the arm64 runners and macos-15-intel with Intel. Because package.json runs tauri build --bundles app,dmg --no-sign without --target, and scripts/create-macos-pkg.mjs derives the package arch from process.arch, this job will run on an arm64 host and publish arm64 DMG/PKG artifacts under the macos-x64 artifact name, so tag releases still won't contain a real x64 macOS build.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

View 2 additional findings in Devin Review.

Open in Devin Review

dist/*.pkg
- label: macos-x64
os: macos-13
os: macos-15
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 macos-x64 build will produce ARM64 binaries because macos-15 runners are Apple Silicon and tauri build has no --target flag

GitHub Actions macos-15 runners use Apple Silicon (ARM64), unlike macos-13 which was Intel (x86_64). The tauri:build:macos-release script (package.json:30) runs tauri build --bundles app,dmg --no-sign without a --target flag, so it builds for the host architecture. On the previous macos-13 runner this naturally produced x86_64 binaries; on macos-15 it will produce ARM64 binaries instead. The matrix target: x86_64-apple-darwin field is only consumed by dtolnay/rust-toolchain and rust-cache — it is never passed to tauri build. As a result, the artifacts uploaded under the label codex-switch-macos-x64 will actually be ARM64 binaries, and the release will ship mislabeled architecture binaries (or the build will fail at link time when it finds the x86_64 toolchain doesn't match the host-default aarch64 compilation).

Contrast with the Windows matrix entry, where tauri:build:windows explicitly passes --target x86_64-pc-windows-msvc (package.json:25).

Prompt for agents
The root problem is that macos-15 GitHub Actions runners are ARM64 (Apple Silicon), but the matrix entry is meant to build x86_64 binaries. The tauri:build:macos-release script in package.json does not pass --target to tauri build, so it always builds for the host architecture.

There are two approaches to fix this:

1. Revert to macos-13 (if still available) which is the last Intel-native runner, so the build naturally targets x86_64 without needing --target.

2. Keep macos-15 but add cross-compilation support: either create a new tauri:build:macos-release-x64 script in package.json that passes --target x86_64-apple-darwin to tauri build, or update the workflow to pass the target differently. Note that cross-compiling Tauri apps requires the x86_64 system libraries to be available, which may need additional setup (e.g. installing Rosetta or x86_64 SDK dependencies).

The matrix target field at .github/workflows/build.yml:84 is currently only used for rust-toolchain installation and rust-cache keying — it needs to also be plumbed into the actual tauri build command for cross-compilation to work.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@Cmochance Cmochance merged commit 9ed2182 into main May 19, 2026
4 checks passed
@Cmochance Cmochance deleted the fix/macos-intel-runner branch May 19, 2026 11:23
Cmochance added a commit that referenced this pull request May 19, 2026
PR #42 switched to `macos-15`, but that label resolves to the
`macos-15-arm64` image (per actions/runner-images README). The job
"succeeded" only because it produced another aarch64 binary — verified
by inspecting workflow run 26093996486: the macos-x64 artifact
contained `codex_switch_1.5.10_aarch64.dmg` and the job log shows
`Image: macos-15-arm64`.

The correct free standard Intel runner is `macos-15-intel` (along with
`macos-26-intel`); both are documented as standard runners separately
from the paid `-large` / `-xlarge` tier.

Refs: actions/runner-images README "Available Images" table —
| macOS 15 | x64 | `macos-latest-large`, `macos-15-large`, or `macos-15-intel` |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant