-
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).
- 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
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