-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Releasing the Mapbox iOS SDK
- 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 withios-vX.Y.Z-pre.P, wherePbegins at1and increments for each pre-release. - If necessary, update the screenshot.
- Update the version in the podspec and -symbols podspec.
- Use
X.Y.Z{-alpha|beta.P}to provide smaller, non-symbolicated downloads. - The
-symbolssuffix is used in -symbols podspec for intermediary dev releases to gather useful crash info (e.g.X.Y.Z{-alpha|beta.P}-symbols). This causes the larger, symbolicated install to be used in the integrating project.
- Update the
CHANGELOG.mdfor 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/compare/ios-v3.3.0-alpha.2...ios-v3.3.0-alpha.3).
- Run
tx pull -ato add or update translations. - Create a pull request with these changes and have it approved/merged.
- Create a tag
ios-vX.Y.Z. git push origin ios-vX.Y.Z
You can follow the manual instructions in this gist. However, we expect to deprecate that approach in the future in favor of a more automated approach on a CI server. In the interim, a script automates most of the work so you can follow these simple steps:
- Run
mbx auth ...(If you do not already have AWS credentials, ask a team member for help in setting this up.) -
[First time only] To create a GitHub release from the command line, you will need to:
-
Create a new GitHub access token and add it as the
GITHUB_TOKENenvironment variable — e.g.,export GITHUB_TOKEN='8BADF00DDEADBEEFC00010FF'in your~/.bash_profile.
-
Create a new GitHub access token and add it as the
- Run
make ideploy. This will: - Build all the packages (static and dynamic framework files and friends).
- Upload to s3 (if you've run
mbx authabove). - Test that downloads from s3 work.
- Make a new Github release draft and upload all of the compressed release files to the Github release (if you've set your
GITHUB_TOKENas noted above). - Go to https://github.com/mapbox/mapbox-gl-native/releases to find the draft, confirm that it is valid, and add notes from the changelog.
- When you are satisfied with the release draft, click the button to publish it.
You should first be added to the pods collaborator list.
- Run
pod trunk push platform/ios/Mapbox-iOS-SDK.podspec.
- Repackage the static framework bundle for Fabric distribution, test, and release:
- open fabric.io/kits/manage
- make a new release
- add the compressed result of
make ifabric: Make Mapbox.framework.zip from static/Mapbox.framework (which has everything stuffed inside) - make any other required adjustment to the release meta data then click "Submit for Review"
- Test:
- Make a new app (or update existing) app Mapbox framework with the fabric osx app making sure to get the new version you just submitted for review
- As noted in the Fabric osx app, perform ⌘R to run your app -- verify that the Fabric app is satisfied with the result
- Go back to the fabric.io/kits "new release" page and click the button to publish
- Create a new issue in the mapbox.com repo to request that the version number in constants.js be updated to the new version number that was chosen previously
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.
Workflow: Code, Makefile, CMake, Xcode, ccache, Debugging, CI, JS/Native, Code Generation, Versions & Tagging, Contributing, Troubleshooting
Architecture: Threads, Immutability, Expressions, Text Rendering, Collision Detection, CJK Text
Rendering: OpenGL, Coordinate Systems
Android: checkstyle, APK Size, 4→5, 5→6, 6→7, Symbolication
iOS/macOS: 3→4
Releasing: iOS, macOS, Merging back
Misc: Terminology