Skip to content
Daniel edited this page Oct 8, 2018 · 9 revisions

The purpose of this page is to document JOSESwift's release automation. It should give maintainers an overview on how to release a new version of JOSESwift.

We heavily rely on Fastlane for automating our release process. The purpose of automating this process is to get rid of repetitive, error-prone tasks while promoting short release cycles.

TLDR

  1. πŸ€– bundle exec fastlane prepare type:<major|minor|patch>
  2. :octocat: master ⬅️ release/<x-x-x>
  3. πŸš€ bundle exec fastlane release

Release Process

Releasing a new version of JOSESwift consists of three parts, two of which are already automated:

  1. Release preparation (automated)
  2. Release pull request (manual action needed)
  3. Release (automated)

Release Preparation πŸ€– πŸ”§

This will bump the version number of the project, format Swift code, and run the tests. All changes will be committed and pushed to a release branch release/<x-x-x>.

  1. Checkout master and run bundle exec fastlane prepare type:<major|minor|patch> depending on the version increment you want to make. See Semantiv Versioning for details.
  2. The lane will halt before it finishes and ask for your confirmation to continue. If you want to include any changes in the release, you can make them before you continue the lane. It will automatically commit your changes to the release branch it created.

Release Pull Request πŸ€“ πŸ™

  1. Go to GitHub and create a pull request to merge the release branch from the prepare step to master.
  2. Once the pull request has been approved, merge it and continue with the last step.

Release πŸ€– πŸš€

  1. Checkout master and make sure it is up-to-date with the remote.
  2. Run bundle exec fastlane release. This will tag the release and push the tag to GitHub. It will also push the updated podspec to the CocoaPods trunk.
Clone this wiki locally