Skip to content

[Admin] Release Process

AliSoftware edited this page Mar 9, 2019 · 8 revisions

Here are a memo to steps needed to release a new version:

Ensure tests pass / CI is OK

Ensure that Travis-CI is all-green and that all Unit Tests pass for iOS, tvOS and OSX.

One can even run Unit Tests locally especially test them against older iOS SDKs (Travis-CI don't support older SDKs and older versions of Xcode so we can't make it run the tests on iOS7 Simulators for example)

Update the CHANGELOG

Edit the CHANGELOG.md file to list all the changes.

Bump the lib version

  • Bump the s.version field of the OHHTTPStubs.podspec file.
    Note: You may use pod lib lint to check that the podspec is still valid at that point.

  • Don't forget to also change the CURRENT_PROJECT_VERSION project build setting in OHHTTPStubs/OHHTTPStubs.xcodeproj

Ensure Example projects still work

For each Example project (Examples/ObjC and Examples/Swift):

  • Go in the example project's directory and run pod install to ensure the example include the latest version
  • Run the example and ensure they still work properly

Add a tag

git tag the latest commit then push the tag to GitHub.

Release the new version to CocoaPods

Run pod trunk push OHHTTPStubs.podspec.

This will validate the podspec, ensure it still works and compile, then push it to CocoaPods Trunk (which will in turn automatically trigger the generation of the new documentation on CocoaDocs.org, etc…)

Add Release to GitHub

In the Release tab of GitHub, add the corresponding release and copy/paste the CHANGELOG.md entries to the Release description

Ensure it still works for Carthage

Run carthage build --no-skip-current to build the framework using Carthage

Publish the zipped carthage Archive to GitHub Release

[EDIT] We generally don't do this step for now until Swift reaches ABI stability, because we can only expose a framework built with one given Swift compiler and can't content everybody, so for now with so many ABI-incompatible Swift versions in the wild, publishing a pre-compiled framework using one Swift version always upset half of users anyway, so better let everyone's Carthage built OHHTTPStubs from source.

Hopefully with Swift 5 and ABI stability we'll start publishing pre-compiled frameworks for Carthage again.

Use carthage archive OHHTTPStubs to create the archive, then attach it to the GitHub release