Skip to content
Merged
Show file tree
Hide file tree
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
9 changes: 5 additions & 4 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,9 @@ jobs:
fail-fast: false
matrix:
include:
- { runner: macos-14, arch: arm64 }
# macos-14 retired 2026-11-02 (brownouts before that); the
# Swift shells pin their minimum macOS via swiftc -target
- { runner: macos-15, arch: arm64 }
# macos-13 (the old Intel label) is retired — macos-15-intel is
# GitHub's current x86_64 image; update again when that one goes
- { runner: macos-15-intel, arch: x86_64 }
Expand Down Expand Up @@ -210,8 +212,7 @@ jobs:
ditto "$APP_ED" "build/notarize/$(basename "$APP_ED")"
ditto -c -k build/notarize build/notarize.zip
tools/bundle/notarize.sh build/notarize.zip
xcrun stapler staple "$APP_LIB"
xcrun stapler staple "$APP_ED"
tools/bundle/staple.sh "$APP_LIB" "$APP_ED"

# DMG, not zips: drag-installing from a mounted DMG is the one install
# path macOS never App-Translocates (the zip flow reliably did, blocking
Expand All @@ -238,7 +239,7 @@ jobs:
DMG="dist/bundle/microSAMPLER-macos-${{ matrix.arch }}.dmg"
codesign --force --timestamp --sign "$IDENTITY" "$DMG"
tools/bundle/notarize.sh "$DMG"
xcrun stapler staple "$DMG"
tools/bundle/staple.sh "$DMG"
- uses: actions/upload-artifact@v7
with:
name: microSAMPLER-apps-macos-${{ matrix.arch }}
Expand Down
19 changes: 19 additions & 0 deletions tools/bundle/staple.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
# Staple a notarization ticket, retrying transient network errors (CI helper).
#
# tools/bundle/staple.sh <app-or-dmg> [...]
#
# stapler fetches the ticket from Apple's CloudKit; one dropped connection
# (seen: NSURLError -1005 "network connection was lost", stapler error 68)
# failed a whole release build AFTER notarization had already been Accepted.
# The ticket isn't going anywhere, so just ask again.
set -euo pipefail
for TARGET in "$@"; do
for attempt in 1 2 3 4 5; do
xcrun stapler staple "$TARGET" && continue 2
echo "staple attempt $attempt failed for $TARGET — retrying in 30 s"
sleep 30
done
echo "ERROR: could not staple $TARGET"
exit 1
done
Loading