BT

Fastlane Brings Continuous Deployment to iOS

| by Sergio De Simone Follow 14 Followers on Jan 23, 2015. Estimated reading time: 3 minutes |

Fastlane is a suite of tools that aim at automating the iOS app release process and provide “a fully working Continuous Deployment process” that can be triggered by running a single command.

Fastlane is a collection of ruby scripts that will cover the most usual tasks required when submitting a new iOS app or update to the App Store:

  • deliver can upload app binary, screenshots, and metadata to the App Store.
  • snapshot can automate the process of taking localized screenshots of an iOS app on every device.
  • frameit is used to add device frames aroung app screenshots.
  • PEM will automatically generate and renew your push notification profiles.
  • sigh is able to generate and download your App Store provisioning profile.

The suite sports integration with Jenkins and other third-party tools such as CocoaPods, and xctool, and allows to define multiple lanes which address different deployment targets such as App Store, TestFlight Beta, and testing.

A typical workflow in fastlane looks like this:

lane :appstore do
  increment_build_number
  cocoapods
  xctool
  snapshot
  sigh
  deliver
  frameit
  sh "./customScript.sh"

  slack
end

InfoQ has spoken with Fastlane’s creator, Felix Krause, to learn more about his project.

What is the main advantage that Continuous Delivery/Deployment brings to the iOS app deployment process? How well does it works within the frame of Apple’s review process?

The main advantage is to just save so much time each time you release an update or new app. It’s something iOS developers have to do by themselves.

When starting this project, I wasn’t sure if I’ll be able to automate all aspects of the release process of iOS apps, since there is no public API to implement it. I’m glad to say, it works, and I already set up a fully working Continuous Deployment solution for various companies.

Could you briefly describe what is a typical workflow when using fastlane? What are the most relevant customization options?

I’m using it for the following:

  • Run tests (this includes unit tests and integration tests) on every commit
  • Create new screenshots only, to send them to the client
  • Build and distribute a Beta build
  • Build and distribute to the App Store (this includes renewing the provisioning profiles, creating new screenshots, upload it to the App Store and submitting the app itself)

There are some brief examples on the website http://fastlane.tools. Every developer can easily add or remove individual build steps and even implement his own.

What kind of organization (e.g., indie dev, small shop, enterprise, etc.) do you think can benefit most from using fastlane?

Indie Devs and small shops in the beginning: They usually don’t have any automation running already, so it’s easy to get started with fastlane. Enterprises usually already have some kind of Continuous Integration tools, which they need to adapt to use with fastlane.

Could you tell us something about fastlane current adoption rate? Any success story yet?

I didn’t want to include analytics into the gems themselves, but I still get a few numbers:

  • About 20,000 installs of all the fastlane tools
  • 10,000 visitors on http://fastlane.tools within just 3 days after its launch
  • All individual tools and fastlane itself were trending Ruby repositories of the month on GitHub

I heard back from some well known companies, they successfully integrated the fastlane tools into their release process. One of the first big companies I heard back from was Panic.

How was the process that led you to create fastlane?

I originally implemented fastlane for a client, tightly integrated into their system. When telling other developers about it, they got excited and asked, if they can use it too. That’s why I decided to develop it in a fully flexible and well documented way to share with other iOS developers.
In the beginning I only developed deliver. I realised there are still some tools missing, which is why I created four more tools (snapshot, frameit, PEM and sigh). Since all those programs work by individually, I wanted to connect them all somehow. That’s when I had the idea for fastlane.

Fastlane tools are open-source and can be cloned from GitHub. You can get more details about installing, configuring, and using them in the official guide

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT