SlideShare a Scribd company logo
www.looklive.com@donnywals
Developing in the Fastlane
How LookLive uses Fastlane to automate and speed up the
app deployment process
www.looklive.com@donnywals
A typical deploy day..
Finalize code
Hurry to write some tests
Run tests
Upload to Crashlytics
Update release notes
Upload to iTunes Connect
Wait…
Update (localized) app info
Update (localized) screenshots
Submit build
Wait for review…
Archive build
Update build number
Update release notes
www.looklive.com@donnywals
That’s a lot of steps
And I actually forgot a couple..
www.looklive.com@donnywals
Fastlane to the rescue
fastlane lets you define and run your deployment pipelines for different environments. It helps you unify
your app’s release process and automate the whole process. fastlane connects all fastlane tools and
third party tools, like CocoaPods and Gradle.
www.looklive.com@donnywals
Automate it all?
😍
Yes please!!
www.looklive.com@donnywals
www.looklive.com@donnywals
www.looklive.com@donnywals
CocoaPods
Carthage
verify_xcode
clear_derived_data
xcodebuild
clean_build_artifacts
dsym_zip
splunkmint
slather
increment_build_number
add_git_tag
push_to_git_remote
swiftlint
s3
deploygate
produce
git_commit
ensure_git_status_clean
www.looklive.com@donnywals
Feature-packed
• A range of built in actions (incrementing build
numbers, pushing to git, tagging your repo,
crashlytics and more)
• A lot of integrated tools (sigh, gym, scan, pilot and
more)
www.looklive.com@donnywals
Initial goals for LookLive
Finalize code
Hurry to write some tests
Run tests
Upload to Crashlytics
Update release notes
Upload to iTunes Connect
Wait…
Update (localized) app info
Update (localized) screenshots
Submit build
Wait for review…
Archive build
Update build number
Update release notes
www.looklive.com@donnywals
A LookLive deploy day..
Finalize code
Hurry to write some tests
Wait
Submit build
Wait for review
fastlane deliver
fastlane develop or fastlane beta
www.looklive.com@donnywals
Let’s get technical
www.looklive.com@donnywals
The end result
Increment
build
Run the
tests
Build app
Upload
Crashlytics
Run the
tests
Build app
Upload
Crashlytics
Upload
TestFlight
Upload
Metadata
Develop
Beta
Deliver
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
Ingredients
• fastlane (install through gem install fastlane)
• scan (part of fastlane, used for testing)
• gym (part of fastlane, used for building)
• sigh (part of fastlane, used for downloading certificates)
• crashlytics (function in fastlane, uploads to Crashlytics beta)
• pilot (part of fastlane, uploads to iTunes Connect)
• deliver (part of fastlane, uploads metadata)
www.looklive.com@donnywals
The develop lane
increment_build_number
commit_version_bump
sigh(development: true)
scan(scheme: 'LookLive')
gym(scheme: "LookLive")
crashlytics(
crashlytics_path: ‘:path_to_crashlytics:’,
groups: 'b2c-team',
api_token: ':secret:',
build_secret: ‘:secret:’,
notes: File.read("release_notes")
)
clean_build_artifacts
add_git_tag
push_to_git_remote
Because I always forget
Download certificates,
test (UI and unit) and build
Send beta to Crashlytics
for dev testing
Clean up, tag the repo
and push to git
www.looklive.com@donnywals
Mind blowing awesomeness.
[sound of mind blowing up]
www.looklive.com@donnywals
The beta lane
sigh
scan(scheme: 'LookLive')
gym(scheme: "LookLive")
pilot(
skip_submission: true
)
crashlytics(
crashlytics_path: ‘:path_to_crashlytics:’,
groups: ‘internal-testers‘,
api_token: ':secret:',
build_secret: ‘:secret:’,
notes: File.read("release_notes")
)
clean_build_artifacts
Download certificates,
test (UI and unit) and build
Send beta to Testflight
Clean up
Send beta to Crashlytics
for internal testing
www.looklive.com@donnywals
The deliver lane
deliver(
force: true,
skip_screenshots: true
)
Uploads all the things
www.looklive.com@donnywals
Two more things…
error do |lane, exception|
clean_build_artifacts
end
and
before_all do
ensure_git_status_clean
end
www.looklive.com@donnywals
Time saved:
± 15 minutes for a beta
± 30 minutes for metadata changes
± 4 hours for screenshot updates
www.looklive.com@donnywals
Nice, but we can do more
www.looklive.com@donnywals
Next level
• Use snapshot to automate localised screenshots
• Run fastlane on a Jenkins slave
• Automate submitting for review
www.looklive.com@donnywals
And that’s how we brought
deployment to the Fastlane
Check out the Fastfile at:
https://gist.github.com/donnywals/02da9957696111f99248

More Related Content

PDF
Hadoop Summit 2013 : Continuous Integration on top of hadoop
PDF
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
PDF
Continuous Deployment at Etsy — TimesOpen NYC
PDF
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
PDF
MySQL Software Repositories
PDF
Seven Simple Reasons to Use AppFuse
PDF
Monitoring 改造計畫:流程觀點
PDF
Breaking News and Breaking Software by Andy Hume
Hadoop Summit 2013 : Continuous Integration on top of hadoop
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Continuous Deployment at Etsy — TimesOpen NYC
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
MySQL Software Repositories
Seven Simple Reasons to Use AppFuse
Monitoring 改造計畫:流程觀點
Breaking News and Breaking Software by Andy Hume

What's hot (20)

PDF
Connecting Connect with Spring Boot
PDF
Principles and Practices in Continuous Deployment at Etsy
PDF
Modern Release Engineering in a Nutshell - Why Researchers should Care!
KEY
Enterprise Build And Test In The Cloud
PDF
Advanced Topics in Continuous Deployment
ODP
Continuous integration with Git & CI Joe
PPT
Using Maven2
PDF
DevOps 及 TDD 開發流程哲學
PDF
Android Mobile Continuous Integration. UA Mobile 2016.
PPT
Maven, Eclipse And OSGi Working Together
PDF
Github, Travis-CI and Perl
PDF
GitOps is IaC done right
PPTX
Grails plugin development
PDF
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
PDF
On Software Release Engineering (Bram Adams)
PDF
Git best practices workshop
PDF
Wuff: Building Eclipse Applications and Plugins with Gradle
PDF
Continuous Integration Testing in Django
KEY
Enterprise Build And Test In The Cloud
PDF
distage: Purely Functional Staged Dependency Injection; bonus: Faking Kind Po...
Connecting Connect with Spring Boot
Principles and Practices in Continuous Deployment at Etsy
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Enterprise Build And Test In The Cloud
Advanced Topics in Continuous Deployment
Continuous integration with Git & CI Joe
Using Maven2
DevOps 及 TDD 開發流程哲學
Android Mobile Continuous Integration. UA Mobile 2016.
Maven, Eclipse And OSGi Working Together
Github, Travis-CI and Perl
GitOps is IaC done right
Grails plugin development
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
On Software Release Engineering (Bram Adams)
Git best practices workshop
Wuff: Building Eclipse Applications and Plugins with Gradle
Continuous Integration Testing in Django
Enterprise Build And Test In The Cloud
distage: Purely Functional Staged Dependency Injection; bonus: Faking Kind Po...
Ad

Similar to Developing in the Fastlane -> How LookLive uses Fastlane to automate and speed up the app deployment process (20)

PPTX
Fastlane
PDF
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
PPTX
Continuous Testing 2016
PPTX
Continuous Testing
PDF
Rock Solid Deployment of Web Applications
PDF
Code Coverage for Total Security in Application Migrations
PDF
Integration Testing on Steroids: Run Your Tests on the Real Things
PDF
Making the most of your Test Suite
PPTX
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
KEY
Django deployment with PaaS
PDF
Play Framework on Google App Engine
PDF
Docker, Continuous Integration, and You
PDF
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
PDF
Declaring Server App Components in Pure Java
PPTX
Continuous Build To Continuous Release - Experience
PDF
Pycon India 12
PPTX
Altitude San Francisco 2018: Testing with Fastly Workshop
PPTX
Test Automation using Athena by OLX - Intro
PPTX
Continous integration and delivery for single page applications
Fastlane
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Continuous Testing 2016
Continuous Testing
Rock Solid Deployment of Web Applications
Code Coverage for Total Security in Application Migrations
Integration Testing on Steroids: Run Your Tests on the Real Things
Making the most of your Test Suite
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
Django deployment with PaaS
Play Framework on Google App Engine
Docker, Continuous Integration, and You
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Declaring Server App Components in Pure Java
Continuous Build To Continuous Release - Experience
Pycon India 12
Altitude San Francisco 2018: Testing with Fastly Workshop
Test Automation using Athena by OLX - Intro
Continous integration and delivery for single page applications
Ad

More from Donny Wals (15)

PDF
Your 🧠 on Swift Concurrency
PDF
Using Combine, SwiftUI and callAsFunction to build an experimental localizati...
PDF
The combine triad
PDF
Building reusable components with generics and protocols
PDF
Adopting tdd in the workplace
PDF
The Testing Games: Mocking, yay!
PDF
Me and my importers
PDF
JSON and Swift, Still A Better Love Story Than Twilight
PDF
Adopting tdd in the workplace
PDF
In Defense Of Core Data
PDF
Effectively Producing And Shipping Frameworks For Multiple Platforms
PDF
Improving apps with iOS 10 notifications (do iOS 2016)
PDF
Talk - git task managers and ci
PDF
Marketing strategie Arto
KEY
Hoorcollege Flash 9-2-2012
Your 🧠 on Swift Concurrency
Using Combine, SwiftUI and callAsFunction to build an experimental localizati...
The combine triad
Building reusable components with generics and protocols
Adopting tdd in the workplace
The Testing Games: Mocking, yay!
Me and my importers
JSON and Swift, Still A Better Love Story Than Twilight
Adopting tdd in the workplace
In Defense Of Core Data
Effectively Producing And Shipping Frameworks For Multiple Platforms
Improving apps with iOS 10 notifications (do iOS 2016)
Talk - git task managers and ci
Marketing strategie Arto
Hoorcollege Flash 9-2-2012

Recently uploaded (20)

PDF
Modernizing your data center with Dell and AMD
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
Teaching material agriculture food technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Electronic commerce courselecture one. Pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
Modernizing your data center with Dell and AMD
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Mobile App Security Testing_ A Comprehensive Guide.pdf
The AUB Centre for AI in Media Proposal.docx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Teaching material agriculture food technology
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation_ Review paper, used for researhc scholars
Reach Out and Touch Someone: Haptics and Empathic Computing
Review of recent advances in non-invasive hemoglobin estimation
The Rise and Fall of 3GPP – Time for a Sabbatical?
Unlocking AI with Model Context Protocol (MCP)
Electronic commerce courselecture one. Pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks

Developing in the Fastlane -> How LookLive uses Fastlane to automate and speed up the app deployment process