In my previous post about how I use OmniFocus, I made reference to an on-hold project template called "New App Release". Anytime I release an update to one of my Mac apps, I follow this checklist. In case it's useful to other developers, here's what it contains...

  1. Verify build with Deploymate - this scans my Xcode project and compares all of my API calls against my build target warning me about any deprecated, missing, or private API calls.
  2. Increment version number in Info.plist.
  3. Tag the release in git.
  4. Publish the git tag.
  5. Archive the project in Xcode and export a [Developer ID].(https://developer.apple.com/developer-id/) signed build to the Desktop.
  6. Verify Gatekeeper and code signing is correct by running spctl -a -v App.app.
  7. Zip the exported app binary.
  8. Write release notes and upload the new build's zip file to your hosting provider of choice.
  9. Do whatever you need to do to make a new release happen in Sparkle.
  10. Do a test update in the old version of the app.
  11. Do a test download of the new version from your website.
  12. Upload the dSYM file generated by Xcode's Archive step to Hockey or whatever crash symbolication service you use.

Thanks to Tony Arnold for prompting me to post this checklist.