A Guide to Continuous Delivery on iOS With Fastlane and Firebase

In this article, we’ll learn about continuous delivery and its implementation in the iOS ecosystem.

Continuous Delivery (CD) is the process of automating the build using some external tools/software, which reduces manual developer effort to create the build so you can share the build reliably in no time.

Normally, Continuous Integration (CI) is also implemented with CD, but it’s not compulsory to implement both at the same time.

In CIthe developer’s code is merged continuously, to maintain the latest deployable code all the time. The CD is as effective for a sole developer as for large teams, as you have to share/deploy the build.

So, in this article, we will focus on implementing continuous delivery for the iOS platform using Fastlane and Firebase for sharing the beta build with testers/clients.

Here are some typical tasks that we repeat every time we share a build.

  1. Build the app in different environments (staging/production).
  2. Signing the builds according to specified environments.
  3. Exporting the app and manually configuring the settings for the build.
  4. Uploading it to distribution platforms (like DiawiTestFlight, and Crashlytics).
  5. Share installable build links with release notes (in some cases).

With continuous delivery, you can automate all the above steps.


These are some steps that we are going to implement in the article.

  • Set up Fastlane — We will install Fastlane on the system, and then configure Fastlane with the iOS project. Fastlane is responsible for auto-deployment tasks.
  • Configure Fastlane — We will implement our configuration for desired targets (staging or production, etc., one may have more than two records). Fastfile will tell Fastlane about the compiled information.
  • Exporting the build — We will export the build through the terminal with configurations specified in Fastfile.
  • Setting up app Firebase distribution — We will configure the app on the Firebase console, we can add testers or groups for the app that we will share with testers or clients.
  • Automating the build push to Firebase — We will configure the Fastlane file, so that building the destruction process becomes automated.
  • Enjoying the coffee: Yeah, we have automated the process and saved some of our time.

You can also check out the tools that we are using in the CD process.

Let’s begin the game.

Set Up Fastlane

First, you have to install Fastlane tools on your system.

Install the latest Xcode command-line tools:

 xcode-select --install

Install Fastlane using:

 # Using RubyGems
 sudo gem install fastlane -NV
 # Alternatively using Homebrew
 brew install fastlane

After installation, you can verify the installation of Fastlane tools, with this command.

fastlane -v

After the installation of the tools, you have to change the terminal directory to the project’s directory and then initialize Fastlane tools with the below command:

fastlane init

On this command, you will have to choose the purpose for which Fastlane tools will be used. After that, log in to the Apple account on the terminal.

After the initialization of Fastlane, you will see a Fastlane-named directory in your project’s directory, containing the Fastfile in which we will configure meta information.

Configure Fastlane

We will have to configure the steps that we will automate with Fastlane tools.

 increment_build_number(xcodeproj: "TestProject.xcodeproj")
 build_app(workspace: "TestProject.xcworkspace", scheme: "TestProject-staging",
 export_method: "ad-hoc", silent: "true", output_directory: "./build_ipa")

We are going to implement the process of automating beta testing and configure the parameters of build_app according to that. If you have multiple targets, you can set multiple lanes like, etc.

  • scheme: Target name of your project.
  • export method: An Export method for building creations like app-store, ad-hoc, development, etc.
  • output_directory: Where the exported .ipa will be placed.
  • silent: Hide all information that is not necessary while building.

Exporting build

Once you have configured the lane for deployment, you just have to run the below command for build exporting:

 fastlane staging_adhoc

Replace staging_ahoc with your lane name.

It will show the message on the terminal after the .ipa file is exported.

Now you can share the .ipa file through different sources like Diawi, TestFlight, Firebase App Distribution, manually.

Our next step is to automate the build-sharing process. Fastlane supports many distribution platforms for build sharing, I’m going to use Firebase in this tutorial.


Setting up app Firebase distribution

It’s supposed you have configured the Firebase project from the console with your iOS project.

Add App Distribution to your Fastlane configuration by running the following command from the root of your iOS project:

 fastlane add_plugin firebase_app_distribution

After installing the Firebase plugin, you have to configure the Fastlane file.

 increment_build_number(xcodeproj: “TestProject.xcodeproj”)
 build_app(workspace: “TestProject.xcworkspace”, scheme: “TestProject-staging”,
 export_method: “ad-hoc”, silent: “true”, output_directory: “./build_ipa”)
 app: “Your firebase App Id”,
 groups: “internal-tester, clients”,
 release_notes: “Lots of amazing new features to test out!”,
 firebase_cli_path: “/usr/local/bin/firebase” )
  • app: App ID of the Firebase app, you can get it from the Firebase console.
  • group: You can specify the group with which you want to share the build, I have created a group of testers for internal testing, and another one for client sharing.
  • release_notes: Any changes or updates that are implemented in the build, you can share with the testers.
  • firebase_cli_path: firebase_cli_path will be the same if we haven’t explicitly changed the Firebase tools installation path.

Automating the build push to Firebase:

Once we have updated the Fastfile, we have to log in to Firebase into the console. After login, run the below command.

bundle exce fastlane staging_adhoc

Replace staging_adhoc with your lane name.

Coffee Time

Congratulations, we have automated the deployment and distribution process. You will see a Fastlane summary at the end after the successful distribution of the build on Firebase.

Inline Feedbacks
View all comments