2.1 KiB
2.1 KiB
Release Scripts
release.sh — Ship a new version of makesomething
Automates the full release pipeline: build → sign → DMG → notarize → Sparkle appcast → GitHub Release.
Quick start
# Auto-bumps version and build number from the latest GitHub Release
./scripts/release.sh
The script checks GitHub for the latest release (e.g. v1.5, build 6) and automatically bumps to v1.6, build 7. You'll see a confirmation prompt before anything runs.
Override version or build
# Set a specific marketing version (auto-bumps build)
./scripts/release.sh 2.0
# Set both marketing version and build number
./scripts/release.sh 2.0 10
Safety
- Duplicate detection: If the tag already exists on GitHub, the script exits with an error and suggests what to do.
- Confirmation prompt: Shows the version, build, and previous release before proceeding. Press
yto continue.
What it does
- Fetches the latest release from GitHub to determine version + build
- Archives the app via
xcodebuild - Exports a signed
.appwith Developer ID - Creates a DMG with the drag-to-Applications background
- Notarizes the DMG with Apple (Gatekeeper compliance)
- Signs the DMG with the Sparkle EdDSA key
- Generates
appcast.xmlfor Sparkle auto-updates - Creates a GitHub Release with the DMG attached
- Pushes the updated
appcast.xmlto the releases repo
One-time setup (prerequisites)
- Xcode with your Developer ID signing certificate
- Homebrew tools:
brew install create-dmg gh - GitHub CLI auth:
gh auth login - Apple notarization credentials (stored in Keychain):
You'll be prompted for an app-specific password (generate one at appleid.apple.com).
xcrun notarytool store-credentials "AC_PASSWORD" \ --apple-id YOUR_APPLE_ID \ --team-id YOUR_TEAM_ID - Sparkle EdDSA key — already generated and stored in Keychain (done during initial Sparkle setup)
- Build the project in Xcode at least once so SPM downloads Sparkle and the Sparkle CLI tools are available