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

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

Cocoaheads Montreal, 10/11/2015

B4f9306896b6eaa56a9a6b9048285f53?s=128

Romain Pouclet

November 10, 2015
Tweet

Transcript

  1. 1.
  2. 5.

    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.)
  3. 7.

    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")
  4. 8.

    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)
  5. 9.

    Pushing the app on the App Store from the command

    line • ¯\(ϑ)/¯ • Unofficial API • Reverse engineered by looking at Application Loader ?
  6. 10.

    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)
  7. 11.

    You're not done yet! • Code Signing certificates • Provisioning

    profiles • Screenshots • Push Certificates • ...
  8. 13.

    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
  9. 16.

    Gym will... • Automatically detect your workspace and pick the

    scheme (or ask you for the one to use) • Wrap the output in xcpretty
  10. 17.

    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
  11. 18.

    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'%
  12. 19.

    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
  13. 20.

    Fastfile desc "Submit a new Beta Build to Apple TestFlight"

    lane :beta do sigh gym(scheme: "Rewatch", use_legacy_build_api: true) pilot end
  14. 22.
  15. 23.

    Mirego • We just released a group of app •

    6 apps x 5 screenshots x 5 devices = 150 screenshots took manually
  16. 24.

    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
  17. 26.
  18. 27.

    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)
  19. 28.

    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