Skip to content

Build and smoke-test native arm64 and x86_64 macOS apps #856

Description

@Infiland

Child scope of #736. Depends on #854 and #855.

Problem

The release matrix builds only one arm64 macOS app. Both supported architectures need their own native, dependency-verified build and final-package GUI smoke on matching GitHub-hosted hardware before publication logic is allowed to consume them.

Scope

  • Keep a native Apple Silicon lane and add the official macos-26-intel x86_64 lane, each with CPython 3.12.10 and the lock proven by Prove and lock the macOS x86_64 dependency baseline #854.
  • Give every intermediate artifact and payload an unambiguous architecture-specific name: GM2Godot-macos-arm64 and GM2Godot-macos-x86_64.
  • Run the verifier from Verify macOS Mach-O architecture and deployment targets #855 against each source app, ZIP, and DMG before upload.
  • Extract each final ZIP on its matching native runner, launch Contents/MacOS/GM2Godot, and require the existing one-use GM2GODOT_GUI_SMOKE_RECEIPT contract within a bounded timeout with deterministic process cleanup.
  • Preserve existing Linux and Windows build bytes/names and do not publish a GitHub Release in this child.

Acceptance criteria

  • The matrix contains exactly one native arm64 macOS job and one native x86_64 macOS job with matching setup-python architecture and environment receipts.
  • ZIP/DMG and uploaded workflow-artifact names are architecture-specific and cannot collide.
  • Both jobs pass complete Mach-O/minimum-version verification from Verify macOS Mach-O architecture and deployment targets #855.
  • Each final ZIP reaches the GUI event loop on its matching native runner and writes the exact smoke receipt before a bounded clean exit.
  • Missing receipt, wrong architecture, early exit, timeout, or cleanup failure blocks artifact upload.
  • Linux and Windows build and upload behavior remains unchanged.
  • Pyright, Ruff, workflow/smoke tests, and the full unit suite pass.

Non-goals

Do not change release-publisher asset inventories, automatic updater selection, Developer ID signing, notarization, or stapling here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingciContinuous integration and required checkstestingTests, fixtures, CI, validation, and coverage

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions