written on Ruby. A set of tools written on Ruby. You define and run sets of tasks (lanes) for You define and run sets of tasks (lanes) for different environments and configurations. different environments and configurations. Automates Automates deployment/release process. deployment/release process. 100% open-source, fully extendable and 100% open-source, fully extendable and configurable. configurable. Saves you time Saves you time and frustration. and frustration. 1 1
There are another two or three... Available as standalone from CLI. Available as standalone from CLI. Based on the solid.... Based on the solid.... A Ruby Library that exposes Apple Developer Center and iTunes A Ruby Library that exposes Apple Developer Center and iTunes Connect as API Connect as API
it. It's a gem. $ sudo gem install fastlane --verbose Quickstart Quickstart $ cd MyAwesomeApp; fastlane init Gets you a boilerplate Gets you a boilerplate Fastfile Fastfile Gets you a boilerplate Gets you a boilerplate AppFile AppFile
information that is used across all fastlane tools. across all fastlane tools. Your App Identifier Your App Identifier Your Apple ID Your Apple ID Your iTunes Connect Team Name Your iTunes Connect Team Name Your Apple Dev Portal Id Your Apple Dev Portal Id Your iTunes Connect Account Your iTunes Connect Account
Where you define your set of tasks (lanes) i.e App Store Release, Testflight Release, Ad-Hoc i.e App Store Release, Testflight Release, Ad-Hoc Release, Testing Release, Testing Each lane is comprised of Each lane is comprised of "Actions" "Actions"
running the requested lane # Supports the same actions as lanes end after_all do |lane| # Executed after running the requested lane and # the lane ran succesfully. end error do |lane, exception| # Executed when an error occurs in any of the # `before_all`, the lane itself or `after_all` blocks end Helper blocks Helper blocks
pod install increment_version_number( # Makes app version from 1.1.0 to 1.2.0 bump_type: "minor" ) changelog_from_git_commits # Turns your git history into CHANGELOG ensure_git_branch( # Makes sure you're on the "release" branch branch: 'release' ) ensure_git_status_clean # Ensures no uncommited changes get deployed push_to_git_remote # Pushes `master` branch to `origin` remote push_git_tags # Pushes only tags and nothing else Numerous predefined "tasks" to use in your lanes. Numerous predefined "tasks" to use in your lanes.
clean: false ) # Build an IPA out of the app gym( workspace: "MyApp.xcworkspace", configuration: "Debug", scheme: "MyApp", silent: true, clean: true, # clean build folder first output_directory: "path/to/dir", output_name: "my-app.ipa" ) Fastlane tools are also actions! Fastlane tools are also actions!
end lane :test do desc "Run all tests in an iPad Air 2 Simulator" test_app end def test_app scan( scheme: "RevealFootball", configuration: "Testing", clean: false, device: "iPad Air 2", skip_slack: true ) end