This guide explains how to create a new release for DockCleat on GitHub.
- Git repository is set up and connected to GitHub
- You have push access to the repository
- Xcode is installed and configured
- Apple Developer account (for Developer ID signing and notarization)
For Developer ID signed apps, notarization is required. Set up credentials once:
Run the setup script:
./scripts/setup-notarization.shThis will:
- Prompt for your Apple ID
- Prompt for your Team ID (default: JDMS6RY775)
- Prompt for an App-Specific Password
- Store credentials securely in macOS Keychain
To get an App-Specific Password:
- Go to https://appleid.apple.com
- Sign in and navigate to "App-Specific Passwords"
- Generate a new password for "DockCleat Notarization"
- Copy the password (it's only shown once)
Add the following secrets to your GitHub repository:
- Go to Settings → Secrets and variables → Actions
- Add these repository secrets:
APPLE_ID: Your Apple ID emailNOTARY_PASSWORD: Your App-Specific PasswordTEAM_ID: Your Team ID (optional, defaults to JDMS6RY775)
The GitHub Actions workflow will automatically use these secrets for notarization.
Update the version in DockCleat.xcodeproj/project.pbxproj:
MARKETING_VERSION- User-facing version (e.g., "1.0.0")CURRENT_PROJECT_VERSION- Build number (e.g., "1")
Add a new entry to CHANGELOG.md with all changes since the last release.
Run the build script:
./scripts/build-release.sh [version]Example:
./scripts/build-release.sh 1.0.0This will:
- Build the Release version
- Create a ZIP file in the project root
- Automatically sign with Developer ID (if available) or Apple Development
- Submit for notarization (if credentials are set up)
- Staple the notarization ticket to the app
Note: If you haven't set up notarization credentials, the build will still succeed but skip notarization. Run ./scripts/setup-notarization.sh to enable it.
# Create and push the tag
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0- Go to your GitHub repository
- Click "Releases" → "Draft a new release"
- Select the tag you just created (e.g.,
v1.0.0) - Fill in the release title and description (copy from CHANGELOG.md)
- Upload the ZIP file created by the build script
- Click "Publish release"
If you've set up GitHub Actions (.github/workflows/release.yml), simply:
-
Create and push a tag:
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin v1.0.0 -
GitHub Actions will automatically:
- Build the Release version
- Create a ZIP archive
- Submit for notarization (if secrets are configured)
- Create a GitHub Release
- Upload the ZIP file
Note: Make sure you've added the required secrets (APPLE_ID, NOTARY_PASSWORD, TEAM_ID) to your GitHub repository for notarization to work.
- Update version numbers in Xcode project
- Update CHANGELOG.md with new changes
- Test the Release build locally
- Commit all changes
- Create and push git tag
- Create GitHub Release (or let GitHub Actions handle it)
- Verify the release is accessible
- Update README.md if needed (e.g., new features)
Follow Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for new functionality in a backwards compatible manner
- PATCH version for backwards compatible bug fixes
Example: 1.0.0 → 1.0.1 (patch) → 1.1.0 (minor) → 2.0.0 (major)