Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here

fastlane

A fastlane setup to deploy Objective-C and Swift frameworks.

Subscribe to updates I use fastlane


Statistics on fastlane

Number of watchers on Github 211
Number of open issues 0
Average time to close an issue less than a minute
Main language Ruby
Average time to merge a PR about 3 hours
Open pull requests 0+
Closed pull requests 0+
Last commit over 3 years ago
Repo Created almost 4 years ago
Repo Last Updated over 1 year ago
Size 41 KB
Organization / Authorafnetworking
Contributors2
Page Updated
Do you use fastlane? Leave a review!
View fastlane activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating fastlane for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Objective-C/Swift Framework Deployment made easy

Note this is still a work in progress, and is not ready for production yet

Creating a new release for an Objective-C/Swift open source framework is a tedious process. This fastlane setup is an attempt to streamline that process by creating a single button to generate a new release, allowing developers to focus on great updates, without the overhead of creating new releases.

It is recommended to have a high level understanding of what fastlane is, but it is not required. You can read up more on fastlane here.

Installation

To install fastlane, simply use gem (related: Should I use sudo?):

[sudo] gem install fastlane

Why?

The goal is to create a one button release like so with almost no overhead for a developer.

fastlane prepare_framework_release version:3.0.0 env --deploy

That does the following:

  1. Verifies the git branch is clean
  2. Ensures the lane is running on the master branch
  3. Verifies the Github milestone is ready for release (no open issues, and at least one closed issue)
  4. Pulls the remote to verify the latest the branch is up to date
  5. Updates the version of the info plist used by the framework
  6. Updates the version of the podspec
  7. Generates a changelog based on the Github milestone
  8. Updates the changelog file
  9. Commits the changes to master
  10. Pushes the commited branch to the remote
  11. Creates a new tag
  12. Pushes the tag to the remote
  13. Runs the tests on the CI server

When the tests have passed on CI, the complete_framework_release lane will automatically run:

  1. Generates a changelog for the Github Release Page
  2. Creates a Github Release
  3. Builds Carthage Frameworks
  4. Uploads Carthage Framework to Github Release
  5. Pushes podspec to pod trunk
  6. Lints the pod spec to ensure it is valid
  7. Closes the associated Github milestone

Github Management Best Practices

In order to get the most out of this tool, it is recommended you manage your Github repo with the following best practices. It's easy to do, and gives you a lot of automation power with fastlane. Below is how AFNetworking is being managed:

  • Any changes that should be referenced in the changelog shoud be merged using pull requests.
  • The title of the pull request should be concise, and ready to display in the changelog. This means as the admin of the repo, it may be appropriate for you to edit a pull request's title to make it more meaningful.
  • All releases should be managed with a Github milestone. Not only does this provide a well documented place for users to get a clear view of what went in to a release, but it will also serve as the main component for changelog generation. The milestone name should match the planned tag name.
  • All issues merged should be grouped into one of five categories using Github labels. This allows the changelog to be divided into multiple, logical sections, like so. You can see an example of an AFNetworking release managed this way.
    • Added
    • Updated
    • Changed
    • Fixed
    • Removed

Getting Started

There are primary use cases for these fastlanes: testing and deployment. When used together, a full continuous integration system can be created.

Testing

Getting the testing harness configured is an easy process.

  1. Configure the scheme's test action to run a test target, and confirm all tests pass locally
  2. Setup the Fastfile
  3. Setup the env files
  4. Setup CI (optional)
  5. Profit

Follow the getting started guide to configure the framework for testing.

Deployment

Getting up and running is a simple process:

  1. Setup the Fastfile
  2. Setup the env files
  3. Setup CI (optional)
  4. Generate a Github API Token
  5. Generate a Pod Trunk Access Token
  6. Profit

A full deployment guide has been created to help get developers get started with automating deployment.

Available Fastlane Lanes

The lanes provided are divided into two groups: lanes meant for for testing, and lanes meant for deployment. In combination with the Github best practices above, developers can fully automate the release process.

fastlane questions on Stackoverflow (View All Questions)
  • Passing an environment variable to a shell script from Fastlane
  • Use two sets of devices in fastlane snapshot?
  • Fastlane Snapshot with Objective-C
  • Fastlane provision profile madness
  • Using Fastlane to automate apk upload
  • fastlane build iOS apps get some error
  • Unable to run `sigh` fastlane
  • Fastlane: How can I "increment_build_number" of one target only?
  • fastlane: Deploy to local iOS device
  • Calling Snapshot from the command line (FastLane Tools > Snapshot)
  • fastlane debugging error messages
  • Creation of apps of this type is not available / fastlane produce
  • How can I build a react-native iOS Application with fastlane
  • How to solve issue :"faraday_middleware 0.9.0 conflict with faraday (<0.9 , >= 0.7)" caused by running fastlane
  • Fastlane/release automation for Android
  • Xcode 7 + Bots + Fastlane: How to automatically deploy an app to itunes connect using Fastlane's Deliver
  • How to set the `-ferror-limit` when using Fastlane
  • Fastlane + OCLint + CocoaPods integration. Error when excluding Pods folder
  • Code signing an app built with fastlane and CocoaPods built as dynamic frameworks
  • How to update TeamCity Agents to the latest fastlane tools gem
  • Access Fastlane
fastlane list of languages used
Other projects in Ruby