(Consider releasing the Mapbox macOS SDK at the same time.)

Version the packages

  1. Choose a version number per Semantic Versioning and our tagging rules. Let's call it ios-vX.Y.Z. If this is a pre-release, go with ios-vX.Y.Z-pre.P, where P begins at 1 and increments for each pre-release.
  2. If necessary, update the screenshot.
  3. Update the version in the podspec, -snapshot-dynamic podspec, and -stripped podspec.
  4. Update the CHANGELOG.md for the release.
    • Add today’s date to the header for the release.
    • #protip: you can use the compare (ios-v#.#.#-previous-beta.#...release-N|master) feature in github to more easily find intra-release changes (i.e. https://github.com/mapbox/mapbox-gl-native-ios/compare/ios-v5.7.0-alpha.1...ios-v5.7.0-beta.1).
  5. Run tx pull -a to add or update translations.
  6. Create a pull request with these changes and have it approved/merged.
  7. Create a tag ios-vX.Y.Z.
  8. git push origin ios-vX.Y.Z

Build and release

The release build and deployment process starts on CircleCI once you push the tag. This will automatically:

  • Build, package, and upload the different release flavors to s3 and GitHub.
  • Create a draft release on GitHub.

Once the ~35 minute deployment process is finished, you should:

  • Copy the release notes to the draft GitHub release.
  • Check that the attached packages are valid.
  • Push the publish button. 💚

The old manual way

In times of dire need, you can still deploy manually by following the instructions in this old revision, which relies on this script.

Stable releases

cocoapods

Note: You should first register a CocoaPods id and be added as a CocoaPods collaborator for the Mapbox-iOS-SDK pod
  • Run pod trunk push platform/ios/Mapbox-iOS-SDK.podspec.

Documentation

Pre-releases

Documentation

Publish API documentation in the mapbox/ios-sdk repo. After generating the docs, only commit the new api/X.X.X/ folder — this makes them publicly available, but leaves the stable version as the default.