Adopting Fastlane for automating our daily iOS developements tasks

Posted by on May 4, 2016



For those who don’t know:  Fastlane is the Holy Grail (the one that Indiana Jones was really looking for, if only he had been an iOS programmer)

Fastlane helps you automate every aspect of your release to the App Store.

It allows coders to deploy app updates from any computer, set up and submit apps more easily, and automate the use of the standard commands required for app revision and testing.

We can even add components on top of Fastlane itself — the tools support customized, user-built actions to extend their functionality.

But what exactly are the usual steps around iOS development and releases to the App Store ?

Current steps (of course can vary):

  • Pull changes from remote repository
  • Run tests (including UI testing) (if got lucky there is nothing to fix)
  • Increment build number (and version number if required)
  • Check provisioning profiles and certificates for code signing (Freddy Krueger was the creator of all this process for sure!)
  • Build new binary version
  • Generate release notes for every supported localisation
  • Take screenshots for every device and every supported localisation
  • Prepare new version on iTunes Connect (and TestFlight)
  • Upload binary to iTunes Connect
  • Share with testers
  • Upload binary to Crashlytics Beta
  • Share with testers
  • Push changes to remote repository


That is a lot to handle in one day!

Because just taking into account the binary build time plus iTunes related stuff time…. got and get your bag to sleep at the office.

Of course, the duration can be different depending on some miracles (cof cof #iosprocessingtime).

So publishing a new version to iTunes App Store is very awkward and time consuming.

But, no more!

Now with a single command:

I do all these steps:

  • Increment project build number
  • Download up-to date provisioning profiles for code signing
  • Build/Archive the app using the correct scheme (QuitNow or QuitNow Pro)
  • Notify to channels (cli, slack, mac os x notification center)
  • Upload a perfectly signed binary to TestFlight/Crashlytics for Beta testers to try

And i just need to use my time in another task while Fastlane save me 30 minutes.

Screen Shot 2016-04-27 at 14.57.21

The last step: “notification” , puts a message at the console and also at the notification center…. a reminder like:

Screen Shot 2016-04-28 at 10.27.45 Fastlane pilot_free task looks like this:

You can improve the process to fit your needs, including running test, syncing changes from remote repositories and much more.

You can even make it to work only on specific git branches and only if they are not dirty. And you can commit changes at the end, like committing the new build number bump and push it to the remote repository.

Lets see our lane for releasing a new version to iTunes:

Another automation example: Generate APNS Certificates containers for your server (PUSH notifications related)

Btw, this post is approved by Felipe