Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Save countless hours of work with this one simp...

Save countless hours of work with this one simple trick - Fastlane tools

Cocoaheads Montreal, 10/11/2015

Romain Pouclet

November 10, 2015
Tweet

More Decks by Romain Pouclet

Other Decks in Programming

Transcript

  1. 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.)
  2. 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")
  3. 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)
  4. Pushing the app on the App Store from the command

    line • ¯\(ϑ)/¯ • Unofficial API • Reverse engineered by looking at Application Loader ?
  5. 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)
  6. You're not done yet! • Code Signing certificates • Provisioning

    profiles • Screenshots • Push Certificates • ...
  7. 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
  8. Gym will... • Automatically detect your workspace and pick the

    scheme (or ask you for the one to use) • Wrap the output in xcpretty
  9. 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
  10. 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'%
  11. 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
  12. Fastfile desc "Submit a new Beta Build to Apple TestFlight"

    lane :beta do sigh gym(scheme: "Rewatch", use_legacy_build_api: true) pilot end
  13. Mirego • We just released a group of app •

    6 apps x 5 screenshots x 5 devices = 150 screenshots took manually
  14. 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
  15. 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)
  16. 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