Skip to content

Release manual update #114

Description

@keiranking

Problem

Current release does not reflect the codebase.

Solution

Tag the codebase:

  • Create tag: eg git tag v0.2.0
  • Verify the tag is attached to the last commit
  • Push the tag to GitHub: git push origin v0.2.0

Create an updated package:

  • Archive the app
  • Notarize the app
  • Create a signed disk image
  • Notarize the disk image
  • Staple the ticket to the disk image
  • Verify the app is ready for distribution

Release the updated version:


Instructions

How to archive an app

  • Xcode › Product › Archive

How to notarize an app

  • Xcode › Window › Organizer
  • Select the archive and choose Direct Distribution.
  • Wait for Apple to notarize the app.
  • Hover over the archive and choose Export.

How to create a signed disk image

  • Use create-dmg: create-dmg AppName.app
  • If you create or have an unsigned dmg from other tools, sign the dmg: codesign --sign "Developer ID Application: Your Developer Name (TEAM_ID)" --force --options runtime --timestamp YourApp.dmg

How to notarize a disk image

(Can't find your team ID?)

  • If needed, create an app-specific password. Log in to your Apple Account › App-Specific Passwords. Store it somewhere.
  • xcrun notarytool submit YourApp.dmg --apple-id "your-apple-id" --team-id "TEAM_ID" --password "your-app-specific-password" --wait
  • Check the status: xcrun notarytool info <SUBMISSION_ID> --apple-id "your-apple-id" --team-id "TEAM_ID" --password "your-app-specific-password"

How to staple a disk image

  • xcrun stapler staple YourApp.dmg

How to verify the app is ready for distribution

  • Open the .dmg and move it to Applications
  • spctl -a -vvv /Applications/YourApp.app
  • codesign --verify --deep --strict --verbose=2 /Applications/YourApp.app

How to create a new GitHub release

  • Create a new GitHub release
  • Choose the tag you pushed
  • Use the version as the release name (eg v0.2.0)
  • Upload the app package
  • Add release notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions