Skip to content

Release Steps

Joel Fischer edited this page Oct 20, 2020 · 34 revisions

When working on a new release, there are a few steps that need to be taken. This should eventually be wrapped up in a script, but for now it's manual. See this example commit.

  1. The project file's version should be bumped to the new version number according to semantic versioning 2.0.0. The example project should also be bumped. Change the version in the xcode project version field

  2. Change the version number in the podspec.

  3. Ensure that the RPC and protocol versions in the SDLGlobals file are up to date.

  4. Update to the newest BSON submodule. Update Package.swift and CocoaPods dependency files to point to latest if necessary.

  5. Add the exhaustive changes to the CHANGELOG file.

  6. Ensure that you have Jazzy installed on your system (sudo gem install jazzy). Generate Jazzy Documentation using (from the script directory) bash generate-documentation.sh. The changes will be committed.

  7. Ensure that the RPC_SPEC has released to the master branch and update the submodule to point to the new release tag (or to the HEAD of master, if no release of the RPC_SPEC is occurring).

  8. Commit the release to develop, merge it to master (or for Beta / RC a release/x.x.x branch) and tag it there (e.g. 4.3.0, 4.3.0-alpha.1, 4.3.0-rc.2), then merge master back to develop.


After committing the new release and tagging it:

  1. Create a new release for the tag and add the highlights of the changes. For example, if there are breaking changes, any new features, or major changes / bugfixes.

  2. Push the new release to the primary cocoapod using command line: pod trunk push SmartDeviceLink.podspec --allow-warnings.

  3. Push the new release to the secondary cocoapod using command line: pod trunk push SmartDeviceLink-iOS.podspec --allow-warnings.

  4. Add a binary archive to the release for Carthage (fat framework) using this guide. Specifically, build a new version using carthage build --no-skip-current --platform ios, then run: carthage archive --project-directory ./ a. Temp: carthage update --new-resolver --no-build # Or use bootstrap for a CI with a Cartfile.resolved ./carthage-build.sh --cache-builds --platform iOS,tvOS # Add --configuration Release-static if you choose static builds.

  5. Add a binary xcframework archive for manual installation with the following commands:

    1. xcodebuild archive -project 'SmartDeviceLink-iOS.xcodeproj/' -scheme 'SmartDeviceLink' -configuration Release -destination 'generic/platform=iOS' -archivePath './SmartDeviceLink-Device.xcarchive' SKIP_INSTALL=NO
    2. xcodebuild archive -project 'SmartDeviceLink-iOS.xcodeproj/' -scheme 'SmartDeviceLink' -configuration Release -destination 'generic/platform=iOS Simulator' -archivePath './SmartDeviceLink-Simulator.xcarchive' SKIP_INSTALL=NO
    3. xcodebuild -create-xcframework -framework './SmartDeviceLink-Device.xcarchive/Products/Library/Frameworks/SmartDeviceLink.framework/' -framework './SmartDeviceLink-Simulator.xcarchive/Products/Library/Frameworks/SmartDeviceLink.framework/' -output './SmartDeviceLink.xcframework'
    4. Compress the .xcframework and add the it to the release.
  6. Add the docset to the release found in docs/docsets/.

Clone this wiki locally