Slide 1

Slide 1 text

Save countless hours of work with this one simple trick Cocoaheads Montréal - 9/11/2015

Slide 2

Slide 2 text

A couple of weeks ago, my girlfriend was out for the night so...

Slide 3

Slide 3 text

...I played with Fastlane while watching Netflix (Please don't judge me)

Slide 4

Slide 4 text

Why? TL;DL: Because you could be doing something else

Slide 5

Slide 5 text

Command line tools are usually... • Boring* • Hard to use (intuitively) • Hard to script (properly) • Hard to maintain (by the next one) Apple's are no exception (* Except Carthage, Carthage we like.)

Slide 6

Slide 6 text

Let's build an app (litteraly)

Slide 7

Slide 7 text

Building an app xcodebuild -project Rewatch.xcodeproj \ -scheme Rewatch \ -configuration QA \ CONFIGURATION_BUILD_DIR="$CWD/build" clean build • 7 actions (clean, build, archive...) • 39 options • Terrible error reporting (usually "error 65")

Slide 8

Slide 8 text

Packaging the app into an IPA xcrun -sdk iphoneos \ PackageApplication "$CWD/build/Rewatch.app" \ -o "$CWD/build/Rewatch.ipa" • Huge perl script • (Don't laught, perl 6 was released last month)

Slide 9

Slide 9 text

Pushing the app on the App Store from the command line • ¯\(ϑ)/¯ • Unofficial API • Reverse engineered by looking at Application Loader ?

Slide 10

Slide 10 text

Writing a script to wrap all this • Usually end-up copy/pasted accross multiple projects... • ...or shared as a submodules or something similar • Suggested a relatively simple one in my book, around 100LOC (#humblebrag)

Slide 11

Slide 11 text

You're not done yet! • Code Signing certificates • Provisioning profiles • Screenshots • Push Certificates • ...

Slide 12

Slide 12 text

Introducing Fastlane

Slide 13

Slide 13 text

Introducing Fastlane • Automatize all the things you need and then some • Define and run your deployment pipelines for different environments (debug, qa, production...) • Written in Ruby (by the guy on the left, Felix Krause) • Each part can be use as standalone tools • iOSDevWeekly frequent flyer

Slide 14

Slide 14 text

Let's build an app (litteraly)

Slide 15

Slide 15 text

Building the app with Fastlane gym (seriously)

Slide 16

Slide 16 text

Gym will... • Automatically detect your workspace and pick the scheme (or ask you for the one to use) • Wrap the output in xcpretty

Slide 17

Slide 17 text

But wait, there is more • Deliver will upload your app and metadata to the app store • Snapshot will take screenshots • FrameIt will resize screenshots into right devie frames • Pem will manage your push notification profiles • Cert & Sigh will magically fix your code signing issues • Produce will create th app on iTunes Connect • Scan will run tests

Slide 18

Slide 18 text

Wrapping the Fastlane tools using Fastlane gem install fastlane fastlane init (Even better is adding Fastlane as a dependency in your Gemfile) source "https://rubygems.org" gem 'fastlane', '~> 1.36', '>= 1.36.4'%

Slide 19

Slide 19 text

Fastfile platform :ios do before_all do carthage(platform: "iOS") end desc "Submit a new Beta Build to Apple TestFlight" lane :beta do # ... end end

Slide 20

Slide 20 text

Fastfile desc "Submit a new Beta Build to Apple TestFlight" lane :beta do sigh gym(scheme: "Rewatch", use_legacy_build_api: true) pilot end

Slide 21

Slide 21 text

Using a lane fastlane beta

Slide 22

Slide 22 text

Mirego

Slide 23

Slide 23 text

Mirego • We just released a group of app • 6 apps x 5 screenshots x 5 devices = 150 screenshots took manually

Slide 24

Slide 24 text

Mirego • Uses a 1300 LOC bash script that does a lot • It also handles a lot of cases so big up to our CTO for writing and maintaining that

Slide 25

Slide 25 text

We are definitely looking into Fastlane (and hiring)

Slide 26

Slide 26 text

Rewatch

Slide 27

Slide 27 text

Rewatch ! Fastlane • iOS application that suggests episode to, well, rewatch • Hoping to release a beta soon-ish, register on rewatchapp.com • rewatchapp.com is using "Boarding" • rewatchapp.com was online in one hour (design included)

Slide 28

Slide 28 text

Bonus • Fastlane has a great community • This is a true story • Posted a tweet the night I was playing with Fastlane • I hid my phone under a pillow because of the 40+ notifications I got in the following hour

Slide 29

Slide 29 text

Thank you! Questions? • Twitter: @palleas • romain-pouclet.com • http://fastlane.tools