macOS DMG-swap E2E #1873
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: macOS DMG-swap E2E | |
| # End-to-end test for the macOS bundle-swap updater (crates/core/scripts/ | |
| # macos-bundle-updater.sh + surrounding logic in | |
| # crates/core/src/bin/commands/update.rs). | |
| # | |
| # Why a separate workflow: the DMG-swap path is invisible to every other | |
| # CI job — the mechanics (process-wait + atomic mv + LaunchServices | |
| # relaunch via /usr/bin/open) can only fail on real macOS. Previously | |
| # this path was only exercised in production by users downloading a new | |
| # DMG release; regressions silently shipped. This workflow runs on every | |
| # PR that touches the relevant files, and on main, so we catch breakage | |
| # before it reaches an alpha user's machine. | |
| # | |
| # Scope: the swap script itself is signing-independent, so no Apple | |
| # Developer ID secrets are needed and the job runs on fork PRs. The | |
| # signed-DMG build path is covered separately by macos-dmg-test.yml | |
| # (workflow_dispatch) and cross-compile.yml (release tags). | |
| # | |
| # Required check: the job name below ("macOS bundle-swap E2E") is wired | |
| # into branch protection / merge queue as required. See | |
| # .github/branch-protection (or the repo's Settings → Branches page) for | |
| # the actual configuration. | |
| on: | |
| # No path filter — this is a required status check, and skipped-by- | |
| # path-filter workflows do not reliably produce a "check context" that | |
| # branch protection sees as passing. Running unconditionally for ~15s | |
| # per PR is much cheaper than debugging a PR stuck waiting for a | |
| # never-fired required check. If cost ever becomes an issue, the right | |
| # fix is to split into a tiny "always-green gate" job + a conditional | |
| # real job — not to re-introduce a top-level path filter. | |
| pull_request: | |
| push: | |
| branches: [main] | |
| merge_group: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
| jobs: | |
| swap-e2e: | |
| name: macOS bundle-swap E2E | |
| runs-on: macos-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Run bundle-swap E2E test | |
| run: bash scripts/macos-bundle-swap-e2e.sh |