Giter Site home page Giter Site logo

fastlane / fastlane Goto Github PK

View Code? Open in Web Editor NEW
35.8K 745.0 5.1K 78.89 MB

🚀 The easiest way to automate building and releasing your iOS and Android apps

Home Page:

License: MIT License

Ruby 82.25% HTML 1.04% Objective-C 0.77% Shell 0.67% Java 0.68% Swift 14.59% JavaScript 0.01% Lua 0.01%
fastlane automation screenshots ios android apps deployment mobile ruby hacktoberfest hacktoberfest2021

fastlane's Introduction

fastlane Logo

Twitter: @FastlaneTools License Gem Homebrew Build Status PRs welcome!

fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application.

All fastlane docs were moved to

Need Help?

Before submitting a new GitHub issue, please make sure to

If the above doesn't help, please submit an issue on GitHub and provide information about your setup, in particular the output of the fastlane env command.

Note: If you want to report a regression in fastlane (something that has worked before, but broke with a new release), please mark your issue title as such using [Regression] Your title here. This enables us to quickly detect and fix regressions.

fastlane team

Łukasz Grabowski

Fumiya Nakamura

Luka Mirosevic

Olivier Halligon

Iulian Onofrei

Joshua Liebowitz

Stefan Natchev

Kohki Miki

Jimmy Dee

Felix Krause

Roger Oba

Max Ott

Satoshi Namai

Daniel Jankowski

Manu Wallner

Jan Piotrowski

Aaron Brager

Andrew McBurney

Maksym Grebenets

Jorge Revuelta H

Manish Rathi

Matthew Ellis

Helmut Januschka

Jérôme Lacoste

Josh Holtz

Danielle Tomlinson

Special thanks to all contributors for extending and improving fastlane.

Contribute to fastlane

Check out for more information on how to help with fastlane.

Code of Conduct

Help us keep fastlane open and inclusive. Please read and follow our Code of Conduct.


fastlane tracks a few key metrics to understand how developers are using the tool and to help us know what areas need improvement. No personal/sensitive information is ever collected. Metrics that are collected include:

  • The number of fastlane runs
  • A salted hash of the app identifier or package name, which helps us anonymously identify unique usage of fastlane

You can easily opt-out of metrics collection by adding opt_out_usage at the top of your Fastfile or by setting the environment variable FASTLANE_OPT_OUT_USAGE. Check out the metrics code on GitHub


This project is licensed under the terms of the MIT license. See the LICENSE file.

This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.

All fastlane docs were moved to

fastlane's People


KrauseFx avatar mfurtak avatar ohayon avatar taquitos avatar crazymanish avatar lacostej avatar janpio avatar hjanuschka avatar snatchev avatar milch avatar mpirri avatar revolter avatar lmirosevic avatar asfalcone avatar joshdholtz avatar rogerluan avatar almassapargali avatar JaniJegoroff avatar nafu avatar jinjorge avatar RishabhTayal avatar mathcarignani avatar mollyIV avatar Liquidsoul avatar dtrenz avatar giginet avatar ainame avatar vpolouchkine avatar bartoszj avatar squarefrog avatar


 avatar Hatem Ragab avatar  avatar Fikret avatar Youngchan avatar  avatar Mateusz avatar Marco Antonio avatar João de Vasconcelos avatar Deliang Yang avatar  avatar  avatar  avatar  avatar  avatar Harvey avatar lybgo avatar d_luoluo avatar  avatar Lie Albert Januar Linarco avatar  avatar Steven Zhang avatar WiType716 avatar lorien avatar Waris avatar Oguz Vuruskaner avatar  avatar Kyoungmin Lee avatar Yi Joon Choi (Hayden) avatar Lukas avatar  avatar qujo avatar Saëns avatar Andrei Miulescu avatar SeaMath avatar Stephen Zhang avatar Niklas Werner avatar  avatar Fabian Rittmeier avatar Subin Yang avatar Anbraten avatar Maximilian Kürschner avatar Rico avatar SeJin Lee avatar Subin Yoon avatar Alex Rubio avatar Devin Godage avatar  avatar Justin Vieira avatar  avatar DylanCat avatar Conner Hiatt avatar Danbi avatar Skyler DesRochers avatar Ucef avatar Rahul Kushwaha avatar Manish Tuladhar avatar Mahesh Bansod avatar Abdelrahman Hamdy Metwaly avatar 友友果果 avatar Muhammad Reza Syahputra Antoni avatar  avatar  avatar Bigyan Koirala avatar Juwon Yun avatar Lyncoln Mauricio avatar Cosmin avatar Kazuki Higashiguchi avatar  avatar Bessai M. Ryadh avatar Thiago Carvalho avatar James Johnson avatar Tobias Maier avatar Jose F. Fernandez avatar Nushaine Ferdinand avatar Luiz Felipe Santos avatar John Thomas Shaw Valanidas avatar Henrik Forsberg avatar Cameron C Andrews avatar  avatar George Chan avatar Hero Protagonist avatar Mark Norgren avatar  avatar Evan Masterson avatar Wesley Kambale avatar Kaan Çembertaş avatar James Shi avatar  avatar Duck avatar Jonathan Reyes avatar  avatar  avatar Ric17101 avatar Vadim Belyaev avatar Paul K. Gill avatar Joshua Kaplan avatar  avatar Markus F avatar Bulut Catikoglu avatar


Charleno Pires avatar Satish Kr Chauhan avatar Phil Adams avatar arden avatar Jaime Chen avatar Stig Kleppe-Jørgensen avatar Richie Adomako avatar Todd Huss avatar jimi bandrix avatar Jerome Lacoste avatar Gary Wright avatar Lev Panov avatar Markus Kirschner avatar  avatar Albert So avatar Patrik Sjöberg avatar Justin Brown avatar Anatoly Sharifulin avatar Imran Ansari avatar yuanhong avatar Panayiotis Tzagkarakis avatar German Blejman avatar Daan Poron avatar IceStar avatar Alexandre Magno avatar Joe Nguyen avatar  avatar ROHITHA DASSANAYAKE avatar Chen, Chih Han avatar Christian Bönning avatar Chinedu Okonkwo avatar Jimmy Dee avatar 大鹏 avatar Daniel Rech avatar San Chen avatar  avatar Johnny Goldsmith avatar wei avatar davidwei_001 avatar Mads Aalund Nielsen avatar Dan Cong avatar evandrix avatar kissthink avatar  avatar Markus Bürgler avatar Patrick Wilson avatar Sergey Simonov avatar Flori avatar Chip Aubry avatar Jamie avatar greysun avatar Manu Wallner avatar Kobkrit Viriyayudhakorn avatar Taisuke Hori avatar ngn999 avatar  avatar keepallsimple avatar  avatar Qiwen Zhao avatar Noritaka Kamiya avatar Simon X. L. avatar  avatar Joan Barros avatar Marc Schipperheyn avatar Chanintorn Asavavichairoj avatar Nuttapol Wilailuk avatar AKKAWEB avatar Marco avatar Hai avatar  avatar Joey Carmello avatar  avatar mayulu avatar David Hagerty avatar  avatar Eric avatar gsho avatar maksa avatar Yann avatar Kris Rott avatar 鲁蒙 avatar Ernest Semerda avatar  avatar Lam Nguyen avatar Oswaldo Rubio avatar  avatar Chris Graham avatar Jose L Pimienta avatar Salvatore Ferranti avatar Andre Lohmann avatar Nicos Belo Karalis avatar Antonio Paola avatar HoNooD avatar  avatar uli niggemann avatar Two Bit Labs avatar Jack avatar Akifumi Fukaya avatar Ian Marsh avatar dcn01 avatar

fastlane's Issues

You have to pass a valid version number using the Deliver file. (e.g. 'version "1.0"')

I'm trying to send version to TestFlight (iTunes Connect) with this lane:

lane :appstore do
  sigh :skip_install
  system("cd ..; ipa build --verbose --configuration AppStore")
  deliver :skip_deploy, :force, ipa: "../jobandtalent.ipa"

And this Deliverfile:

# App Metadata

# The app identifier is required
app_identifier "mycompany.identifier"
apple_id "*****"

# This folder has to include one folder for each language
# More information about automatic screenshot upload:
screenshots_path "./deliver/screenshots/"

# version '1.2' # you can pass this if you want to verify the version number with the ipa file

config_json_folder './deliver'

success do
  system("say 'Successfully deployed a new version.'")

error do |exception|
  # custom exception handling here
  raise "Something went wrong: #{exception}"

A few days ago I could upload version without problems ...Now is required to specified the version in Deliverfile?

Reference XCode variable in actions

I used to have run script created in build phase which reference XCode variable like $INFOPLIST_FILE. If I want to move this code to custom action, can I still reference these variable?

Select Xcode Version

With all the latest Xcode betas it would be great if we could have an option to select the Xcode version to use.

Permission denied - fork failed

Trying to run my own custom shell script and I'm getting permission denied:

INFO [2015-02-06 11:43:31.74]: Variable Dump:
INFO [2015-02-06 11:43:31.74]: {:LANE_NAME=>:beta, :START_TIME=>2015-02-06 11:42:01 -0700, :BUILD_NUMBER=>0, :SIGH_PROFILE_PATH=>"path/to/app.mobileprovision"}
FATAL [2015-02-06 11:43:31.74]: Permission denied - fork failed
FATAL [2015-02-06 11:43:31.75]: fastlane finished with errors

What am I doing wrong?

undefined method `[]' for nil:NilClass

I just update to 0.1.2 and i think something is broken with slack gem.

This is my Fastfile:

before_all do
  ENV["SLACK_URL"] = ""

lane :crashlytics do
  sigh :skip_install, :adhoc
  system("cd ..; ipa build --verbose --configuration adhoc")
  system("cd ..; ipa distribute:crashlytics -c ./pathToFramework/Crashlytics.framework -a *** -s ***")

after_all do |lane|
    message: "App successfully released!",
    success: true

error do |lane, exception|
    message: "#{exception}",
    success: false

But I have this message in the shell:

Build successfully uploaded to Crashlytics
INFO [2015-01-30 10:28:59.75]: Step: slack
INFO [2015-01-30 10:28:59.75]: Step: slack
INFO [2015-01-30 10:28:59.75]: Variable Dump:
INFO [2015-01-30 10:28:59.75]: {:LANE_NAME=>:crashlytics, :BUILD_NUMBER=>54, :SIGH_PROFILE_PATH=>"/path/"}
FATAL [2015-01-30 10:28:59.75]: undefined method `[]' for nil:NilClass
FATAL [2015-01-30 10:28:59.76]: fastlane finished with errors
/Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/actions/slack.rb:29:in `run': undefined method `[]' for nil:NilClass (NoMethodError)
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:81:in `block (2 levels) in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/actions/actions_helper.rb:28:in `execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:80:in `block in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:79:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:79:in `method_missing'
    from (eval):41:in `block (2 levels) in parse'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:27:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:27:in `rescue in execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:5:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:15:in `block in cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:14:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:14:in `cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/bin/fastlane:31:in `block (2 levels) in run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/bin/fastlane:59:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/bin/fastlane:63:in `<top (required)>'
    from /usr/bin/fastlane:23:in `load'
    from /usr/bin/fastlane:23:in `<main>'

For additional information, I'm using Bundler with this dependencies:

source ''

gem "fastlane", '0.1.2'
gem "slack-notifier", '1.0.0'

[Refactor] Remove fastlane context and replace it with environment variables

Since the environment variables are not passed from fastlane to the parent process after execution, we could easily use the ENV to store the lane context.

Big advantage is, that all values inside ENV are also accessible for all actions. Disadvantages are possible naming conflicts and not being able to store complex objects, but only strings.

sigh timeout

Running fastlane beta results in a timeout on a sigh step. Is there a way of overriding the timeout setting? Weird error, the dev portal works fine in the browser...

Wojciechs-MacBook-Pro:src wojtek$ fastlane beta
INFO [2015-01-26 13:58:27.69]: Driving the lane 'beta'
INFO [2015-01-26 13:58:27.69]: Step: increment_build_number
INFO [2015-01-26 13:58:27.69]: [SHELL COMMAND]: agvtool next-version -all
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]: Setting version of project X to:
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]: 13.
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.90]: [SHELL OUTPUT]: Also setting CFBundleVersion key (assuming it exists)
INFO [2015-01-26 13:58:27.90]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.91]: [SHELL OUTPUT]: Updating CFBundleVersion in Info.plist(s)...
INFO [2015-01-26 13:58:27.91]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.92]: [SHELL OUTPUT]: Updated CFBundleVersion in "X.xcodeproj/../X/Info.plist" to 13
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]: Updated CFBundleVersion in "X.xcodeproj/../XTests/Info.plist" to 13
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:28.12]: Step: cocoapods
INFO [2015-01-26 13:58:28.12]: [SHELL COMMAND]: pod install
INFO [2015-01-26 13:58:28.36]: [SHELL OUTPUT]: Analyzing dependencies
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: CocoaPods 0.36.0.beta.1 is available.
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: To update use: gem install cocoapods --pre
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: [!] This is a test version we'd love you to try.
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: For more information see
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: and the CHANGELOG for this version
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Downloading dependencies
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using GTMHTTPFetcher (1.141)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using GZIP (1.0.3)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using JDStatusBarNotification (1.5.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using Mixpanel (2.6.2)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using NSDate+TimeAgo (1.0.3)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using OpenSSL-Universal (1.0.1.k)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using SZTextView (1.1.10)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using SlackTextViewController (1.4.1)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using Tweaks (1.1.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using gtm-oauth2 (0.1.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using mailcore2 (0.4.7)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Generating Pods project
INFO [2015-01-26 13:58:33.10]: [SHELL OUTPUT]: Integrating client projects
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]: [!] GTMHTTPFetcher has been deprecated in favor of gtm-http-fetcher
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]: [!] mailcore2 has been deprecated in favor of mailcore2-ios
INFO [2015-01-26 13:58:33.65]: Step: sigh
INFO [2015-01-26 13:58:35.15]: Login into iOS Developer Center
The file /Users/wojtek/Workspace/x-ios/src/Error1422280745.png does not exist.
INFO [2015-01-26 13:59:05.18]: Variable Dump:
INFO [2015-01-26 13:59:05.18]: {:LANE_NAME=>:beta, :BUILD_NUMBER=>13}
FATAL [2015-01-26 13:59:05.18]: Capybara::Poltergeist::TimeoutError
FATAL [2015-01-26 13:59:05.18]: fastlane finished with errors

Reduce size of HipChat icon image.

Using the HipChat action, the messages sent include the fastlane icon. This icon is huge and often much larger than the contents of a message, excluding errors with long stack traces. It'd be great to reduce the size of the image used for this to more cleanly fit with more average-sized messages.


lane must fail if ipa action fails

2015-02-17 22:33:05.154 xcodebuild[25360:1017915] Xcode_beginning_of_line failed to launch :(

The following build commands failed:
    Check dependencies
(1 failure)

The following build commands failed:
    Check dependencies
(1 failure)
INFO [2015-02-17 22:34:37.94]: Step: snapshot

Documenation - add list of fastlane terminology

I think so far fastlane makes an excellent job of using good terminology for their APIs and documentations. But fastlane also uses several terms that could be understood or are understood differently in other projects. Maybe a list of words, on an extra page, could help a little to define how some terms are understood (differently) in the fastlane universe. Nothing long. But one sentence about what a term means for fastlane. No links, simple definitions.

Proposal for fastlane terminology list

  • action
  • extensions
  • deliver
  • produce
  • snapshot
  • codes
  • lanes
  • frames
  • ...

Please feel free to extend/discuss this list to see if this request makes sense.

Extension Support

I finally got to getting fasten setup for my Xcode project properly. However when I have the following lane defined:

lane :beta do  
   sigh :force
        workspace: "DemoApp.xcworkspace",
        configuration: "Release",
        scheme: "DemoApp",
  deliver :skip_deploy, :force  #skip_deploy => don't submit the app for review (works with both App Store and beta builds)

Sigh does not download and install the provisioning profiles for my Today View Extension. I had to manually set up the provisioning profile for it and then it would build with fastlane on my local machine.

Is this expected behavior and is it possible to have fastlane make sigh download the provisioning profiles for an app extension?

Multiple target support

First of all, thank you for the great job.

I have an Xcode proj with 8 targets, each apps has its bundleid, appid and languages. In that case, time saved thanks to fastlane would be even more important for me but how to handle this ? For now I have my custom script and I'm thinking to migrate if there is built-in support in fastlane.

I'd like to create some configuration in a centralized file "Appfile" contening all the necessary information and be able to directly call the required one (Note: Appfile and Deliverfile for now look to share some duplicate information like app_identifier).

I found this issue fastlane-old/deliver#67, it is a tips but It won't work for the multiple appstore metadata I think and it is not an official support in "fastlane".

Would you think about such an architecture support ?

Thanks for your help !

Missing parameters for snapshot action in fastlane


I can't seem to find a way to tell snapshot which Snapfile to use inside a lane, like $ snapshot --snapfile Snapfile1
After looking at the action code, I think there is no way to do it. I'm tempted to try the sh action to do it.
Using a environment var would work too.

EDIT: sh works 😀

Where should I keep sensitive data?

If I want to use hipchat integration which required ENV["HIPCHAT_API_TOKEN"] set in before_all what is the proper way to do this? Hardcode in Fastfile would be security issue right if I commit this into git.


ended up tracking this down: File.write(path, p.gsub(/PROVISIONING_PROFILE = ".*";/, "PROVISIONING_PROFILE = \"#{udid}\";"))

If no profile is selected this line won't exist

Thoughts on improving this?

Wrong new lines on ipa action


I'm doing sh "ipa…" on fastlane and I'm getting weird wrapping on the logs… not sure what could be happening…

I am using joshdholtz's pull request but I have my doubts that he touched on print code… also I am aware that you've added an ipa command to Fastfile but the pull request hasn't been updated… anyway, something seems weird with sh and I thought you might have some ideas…

sigh 0.2.2 update breaks fastlane

FATAL [2015-02-04 21:53:16.42]: uninitialized constant Sigh::DeveloperCenter::Phantomjs
FATAL [2015-02-04 21:53:16.42]: fastlane finished with errors
/Library/Ruby/Gems/2.0.0/gems/sigh-0.2.2/lib/sigh/developer_center.rb:45:in `block in initialize': uninitialized constant Sigh::DeveloperCenter::Phantomjs (NameError)
    from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/session.rb:79:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/session.rb:79:in `driver'
    from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.2/lib/sigh/developer_center.rb:52:in `initialize'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/sigh.rb:21:in `new'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/sigh.rb:21:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:81:in `block (2 levels) in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/actions_helper.rb:28:in `execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:80:in `block in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:79:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:79:in `method_missing'
    from (eval):21:in `block (2 levels) in parse'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:17:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:17:in `block in execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:11:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:11:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:15:in `block in cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:14:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:14:in `cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:31:in `block (2 levels) in run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:180:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:180:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:155:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/runner.rb:421:in `run_active_command'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/runner.rb:81:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/delegates.rb:8:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:59:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:63:in `<top (required)>'
    from /usr/bin/fastlane:23:in `load'
    from /usr/bin/fastlane:23:in `<main>'

Multiple "Branded" Targets of same underlying App

My first solution was to setup a separate Fastfile for each branded target....but I'm not seeing a way to specify the Fastfile to use with fastlane.

I'll be integrating shortly with Jenkins (just trying to get a manual process working first).

So, what would be your recommendation as to the best way to setup and utilitize fastlane?

Thanks in advance...

Fastlane init: password starting with a dash is interpreted as a command option

Noticed this while playing around with fastlane and running fastlane init as described in the GUIDE.

I have an iTunesConnect password that starts with a dash, and got the following warning after which the process stopped:

[Transporter Warning Output]: The following option was specified but is not recognized:<-my-password-starting-with-a-dash>

Appfile template

Hey - I've accidentally messed up my Appfile and I didn't have a previous version commited.

Can someone give me the template of the appfile with the app ide, bundle etc. so I can set my values and carry on? thanks

fastlane init might be missing dependency multi_json (?)

When running fastlane-0.1.1 'fastlane init' the first time I had a gem error. After installing multi_json gem it worked.

/Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'multi_json' (~> 1.0) among 75 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/hannes/.rvm/gems/ruby-2.1.5:/Users/hannes/.rvm/gems/[email protected]', execute `gem env` for more information
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1313:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1316:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1316:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:60:in `block in gem'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:59:in `synchronize'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:59:in `gem'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/bin/fastlane:22:in `<main>'
    from /Users/hannes/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/hannes/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `<main>'

Execution fails on fastlane-0.1.14

I installed the gem without any issues, but executing the fastlane command would fail with this message:

/Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.14/bin/fastlane:12:in class:FastlaneApplication': uninitialized constant Commander::Methods (NameError)
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.14/bin/fastlane:11:in <top (required)>' from /usr/bin/fastlane:23:in load'
from /usr/bin/fastlane:23:in <main>'

After doing a "gem install commander" it worked, so it seems this commander thing is missing in the dependencies.

Hockey upload fails to find file if there is a space in the filename

I have a generated dSYM zip file called


(note the space in the name)

However, during Hockey upload I get this error:

Symbols not found on path /Users/eric/my-apps-directory/ Crashes won't be symbolicated properly

(note the lack of a space in the error's description of the filename)

The gets generated just fine. I checked the datestamp, unzipped the archive, etc. It just has a space in the name, so the Hockey upload of the dSYM fails.

Move out all shared code

Move all shared code into its own gem:

  • Init Poltergeist
  • iTunes Connect Login
  • Apple Dev Portal Login and Team Selection
  • Update Manager
  • Available languages (deliver and snapshot)
  • Helper class

Colour codes included in slack message

Looks like exception message comes through with colour codes. See [33m and [0m in the screenshot:


Can we somehow prevent it so that STDOUT prints are still coloured?

Steps to reproduce
Given I have following Fastfile defined:

before_all do
  ENV['SLACK_URL'] = <my-slack-hook>

lane :preview do
  deliver :skip_deploy

error do |lane, exception|
    message: exception.message,
    success: false,
    channel: <my-slack-channel>

When I execute bundle exec fastlane preview
And I answer n to Does the PDF on path '/tmp/1424100823.pdf' look okay for you? (blue = updated) (y/n)
Then I should receive slack message without colour codes:

Right now I have workaround in Fastfile which does the job:

error do |lane, exception|
      message: exception.message.gsub(/\033\[\d+m/, ''),
      success: false,
      channel: <my-slack-channel>

Deploy to Crashlytics Beta fails.

It appears that some fatal error happens when the Crashlytics plugin is initialized, but I can't seem to figure out anything else based on this error & stack dump. Help is greatly appreciated.


Submit existing iTC builds to Review instead of uploading a new one

So when looking at the Fastane configuration, i am not sure if it makes sense with the new Apple TestFlight. The new Apple Testflight lets you take a beta build and then make it the live build.

I propose the beta flow uploads the correct metadata for what the new version will be, with the snapshots and all. And then the App Store flow would basically just auto mark the beta upload to be the live version.

Thoughts, ideas?

[HOW-TO] Some explanations on signing/certs/provisioning are needed

Hi there.
Tried fastlane today, read all possible docs :) Maybe not enough, and I missed somethings
So here's few questions I want to clear out:
Let's say we want to submit an app in the AppStore

  1. Should we create an .ipa first, and then resign in by using sigh ?
  2. Now in provided example we have next code:
lane :deploy do
  deliver :skip_deploy

So sigh will get provision profile. When this profile will be used? Will it be used by default on deliver action?
3. What about signing identity? Should I specify it somewhere or there's a way when it will be resolved by cert/sigh? How should I pass those resolved params to other actions?
4. Is there's a way to force Shenzhen(ipa) using team-id/provisioning/signing from Appfile/sigh resul, instead of Xcode?

Thanks. Maybe more real-world examples of fastlane usages/schemes will help :)

[Refactor] Provide a fastlane wide app chooser

Right now it's still mixed across all tools. Almost every tool needs a specific app ID.

Move all the into fastlane_core and also provide a selection of available bundle identifiers. This should be possible by accessing the iTunes Search API and filter by Artist ID.

[Feature] Add dependencies between actions




should raise an exception, since it's obviously the wrong order of tools. I think there should be a new command, which you can put on the top of the Fastfile, something like


which will not raise an exception (in case you have some complex nested calls)

The exception should be raised when running the script and entering the sigh action, which sees, ipa was already run.

Therefore, fastlane should keep a record of executed commands and store it in the lane context.

Failed to build gem native extension / libiconv is missing

Before being able to install fastlane, I had to manually install nokogiri using the following command:

sudo gem install nokogiri -- --use-system-libraries --with-xml2-include=/Applications/

--use-system-libraries allows the install to use the OS X version of libiconv.
--with-xml2= tells it where to find libxml2

Other solutions I found online involved installing homebrew, which I didn't want to do.

Flexible bundle id config

I need to be able to switch bundle id (depends on whether I'm doing an internal testing build or a client distribution build, ie.: our developer account vs theirs). Right now the bundle id can only be set through the Appfile. I would have to modify the file before using fastlane, losing the "one command to deploy".

undefined method `classify' for custom action

module Fastlane
  module Actions
    module SharedValues

    class ArchiveAction
        raise "Workspace is not set".red unless ENV['WORKSPACE']
        raise "Scheme is not set".red unless ENV['SCHEME']"xcodebuild -workspace #{ENV['WORKSPACE']} -scheme #{ENV['SCHEME']} -configuration Debug -destination generic/platform=iOS archive -archivePath #{ENV['SCHEME']}.xcarchive | xcpretty -c")"xcodebuild -exportArchive -archivePath #{ENV['SCHEME']}.xcarchive -exportPath #{ENV['SCHEME']} -exportFormat ipa | xcpretty -c")

        ipa_file = "./#{ENV['SCHEME']}.ipa"

        raise "No ipa file found in #{ipa_file}".red unless File.exist?(ipa_file)

        Actions.lane_context[SharedValues::ARCHIVE_DIR] = ipa_file

After update to latest fasten, I got this:

lib/fastlane/actions/actions_helper.rb:93:in `block in load_external_actions': undefined method `classify' for "archive":String (NoMethodError)

Error in json-1.8.2.gem building

Here is the trace

Fetching: json-1.8.2.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing fastlane:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

creating Makefile

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:
In file included from ./../fbuffer/fbuffer.h:5:
In file included from /Applications/
/Applications/ fatal error: 'ruby/config.h' file not found

include "ruby/config.h"


1 error generated.
make: *** [generator.o] Error 1

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/json-1.8.2 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/json-1.8.2/ext/json/ext/generator/gem_make.out

deliver cannot generate ipa due to wrong path

I've forked fastlane trying to integrate Crashlytics distribution action but I am not able to test it because seems that deliver cannot find the proper path to the project:

Miguels-MacBook-Air-6:chicisimo miguel$ ../Desktop/fastlane/bin/fastlane beta --trace
INFO [2015-01-22 00:12:08.57]: Driving the lane 'beta'
INFO [2015-01-22 00:12:08.57]: Step: sigh
INFO [2015-01-22 00:12:11.50]: Login into iOS Developer Center
INFO [2015-01-22 00:12:26.90]: Login successful
INFO [2015-01-22 00:12:27.79]: Fetching all available provisioning profiles...
INFO [2015-01-22 00:12:28.80]: Checking if profile is available. (15 profiles found)
INFO [2015-01-22 00:12:36.85]: Downloading profile...
INFO [2015-01-22 00:12:38.08]: Successfully downloaded provisioning profile
INFO [2015-01-22 00:12:38.08]: Exported provisioning profile to '/path/to/certificate.mobileprovision'
INFO [2015-01-22 00:12:38.08]: [SHELL COMMAND]: open '/path/to/certificate.mobileprovision'
INFO [2015-01-22 00:12:38.15]: Step: deliver
error: The directory /Users/miguel/chicisimo/fastlane does not contain an Xcode project or workspace.. Use --trace to view backtrace

The project is in /Users/miguel/chicisimo and I don't see any configuration to change this. Can you bring some light?


Fastlane init: snapshots directory is messed probably

I've had SnapFile setup properly before I decided to move to Fastlane.
on init step I've seen such lines:

Successfully created new Deliverfile at './fastlane//Deliverfile'
INFO [2015-02-05 17:08:43.24]: The 'screenshots' folder inside the 'deliver' folder will not be used.
INFO [2015-02-05 17:08:43.24]: Instead the 'screenshots' folder inside the 'fastlane' folder will be used.
INFO [2015-02-05 17:08:43.24]: Click Enter to confirm

But I've found that snapshots directory remains ./deliver/snapshots instead of .snapshots when I open Deliverfile.

I'm not sure whenever it is a bug or not, but looks like this line should be changed.

sigh action ignores :skip_install parameter

In my use of fastlane, I don't want the provisioning profile to be installed (or even opened).

I'll be submitting a pull request to skip the call at the end of sigh.rb if the fastfile has :skip_install.

Support for different Apple Developer and iTunes Connect accounts

It seems that fastlane is having problems when iTC and developer's AppleID accounts are different. That happened in my case because my AppleID is assigned to multiple teams, but iTC doesn't support more that one account per email. fastlane tries to log in my AppleID email to iTC and fails because passwords don't match (even if they did it wouldn't work because that account is for different apps).

I have tried setting SIGH_USERNAME and DELIVER_USER to different emails but it seems that the latter is used all the time if present.

It seems that the problem might be because SIGH_USERNAME environment variable is read only when sigh is launched from command line:

but it falls back to DELIVER_USER from CredentialsManager if the class is instantiated directly:

My ruby knowledge is a bit limited and it might need updating several libs at the same time to make it work...

Just in case, the corresponding lane in Fastlane is (using floatsign to resign the .ipa):

lane :internal do
  sigh :adhoc
  system("ipa build -c \"AdHoc\" -w ../<AppName>.xcworkspace -s '<AppName>'")
  system("./ <AppName>.ipa \"iPhone Distribution: <team>" -b '' -p #{Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH]} <AppName>AdHoc.ipa")
  system("./ <AppName>.ipa \"iPhone Distribution: <team>" -b '' -p #{Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH]} <AppName>AppStore.ipa")
    api_token: '<api_token>',
    ipa: 'fastlane/<AppName>AdHoc.ipa',
    dsym: 'fastlane/<AppName>'
    # notes: ""
  deliver :skip_deploy, :beta

Increment Build Number Git

Right now, the version bump is not commited and pushed.

How can we improve this? One solution is to use the Jenkins Build Number. The problem with this is when you migrate to a new Jenkins, it will be lower than the previous build.

[Important] Improve passing of parameters for all tools

Some tools, like sigh can only be passed some of the available command like options, not all of them.

Also, sometimes users want to have a parameter for a tool, for which there is already an environment variable available (fastlane-old/sigh#45)

There needs to be a more unified way:

There are 5 ways to pass configuration to the individual fastlane tools (ordered):

  • Command line parameter (e.g. deliver -u [email protected])
  • Passing options with fastlane
  • Configuration file (only for snapshot and deliver)
  • Environment variables
  • Asking for information if missing

The user should be able to set every option in all 5 ways.

Any other ideas? Concerns?

Issues with password

Setting up the Deliverfile, I encountered the following error. It appeared after I entered the the wrong iTunes Connect credentials (I was asked wether I wanted to reenter my credentials, which I answered with yes).

You will have to re-run the recent command to use the new username/password.
DEBUG [2015-02-11 11:15:12.40]: [Transporter Output]: DBG-X: The error code is: -20101
FATAL [2015-02-11 11:15:12.40]: Transporter transfer failed.
WARN [2015-02-11 11:15:12.40]: 
ERROR [2015-02-11 11:15:12.40]: Your Apple ID or password was entered incorrectly. (-20101)
FATAL [2015-02-11 11:15:12.40]: Return status of iTunes Transporter was 1: Your Apple ID or password was entered incorrectly. (-20101)
ERROR [2015-02-11 11:15:12.40]: Your Apple ID or password was entered incorrectly. (-20101)
Return status of iTunes Transporter was 1: Your Apple ID or password was entered incorrectly. (-20101)
FATAL [2015-02-11 11:15:12.40]: Could not download metadata from iTunes Connect. Do you have special characters in your password (Like ' or ")?
FATAL [2015-02-11 11:15:12.40]: Error occured with the setup program! Reverting changes now!
INFO [2015-02-11 11:15:12.40]: Deleting the 'fastlane' folder

/usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:302:in `read': No such file or directory @ rb_sysopen - /tmp/527216534.itmsp//metadata.xml (Errno::ENOENT)
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:302:in `parse_package'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:66:in `initialize'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app.rb:113:in `new'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app.rb:113:in `metadata'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/deliverfile/deliverfile_creator.rb:59:in `create_based_on_identifier'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/deliverfile/deliverfile_creator.rb:30:in `create'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/setup.rb:82:in `ask_to_enable_other_tools'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/setup.rb:17:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:44:in `block (2 levels) in run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
    from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:59:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:63:in `<top (required)>'
    from /usr/local/bin/fastlane:23:in `load'
    from /usr/local/bin/fastlane:23:in `<main>'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.