Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fastlane: Android Deployments on Steroids
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ragunath Jawahar
February 25, 2017
Programming
0
170
Fastlane: Android Deployments on Steroids
Presented in Feb '17 Blrdroid meetup.
https://www.meetup.com/blrdroid/events/237112474
Ragunath Jawahar
February 25, 2017
Tweet
Share
More Decks by Ragunath Jawahar
See All by Ragunath Jawahar
Single-responsibility principle meets the real world! (Dubai Edition)
ragunathjawahar
0
66
Single-responsibility principle meets the real world!
ragunathjawahar
0
170
Making sense of large Java and Kotlin classes
ragunathjawahar
1
290
Building Robust Software, Episode 3
ragunathjawahar
1
190
Building Robust Software, Episode 2
ragunathjawahar
1
150
Building Robust Software (Episode 1)
ragunathjawahar
1
380
Speed as a workplace habit
ragunathjawahar
1
340
Building Robust Apps (Swift Edition)
ragunathjawahar
0
280
Re-architecture
ragunathjawahar
0
500
Other Decks in Programming
See All in Programming
SourceGeneratorのマーカー属性問題について
htkym
0
220
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
170
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
230
安いハードウェアでVulkan
fadis
1
790
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
620
存在論的プログラミング: 時間と存在を記述する
koriym
4
480
CSC307 Lecture 15
javiergs
PRO
0
270
ロボットのための工場に灯りは要らない
watany
12
3.2k
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
800
KagglerがMixSeekを触ってみた
morim
0
300
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
3
1.9k
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
160
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
950
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
450
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
240
The untapped power of vector embeddings
frankvandijk
2
1.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
130
Docker and Python
trallard
47
3.8k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
280
Statistics for Hackers
jakevdp
799
230k
Transcript
Fastlane Android Deployments on Steroids Ragunath Jawahar
None
• The “release” engineer is on leave • That bug
fix is not worth a release • Shipped a wrong build variant • I want the latest build “Right NOW” • You make daily builds • Someone help me with the screenshots • Want to be a more efficient engineer
Installing & Setting Up
https://fastlane.tools sudo gem install fastlane
fastlane init
Fastfile • Can and usually has multiple lanes • Each
lane is composed of various Fastlane actions • Actions communicate using the “lane context”
Beta Deployment
β Checklist • Version bump • Commit and push •
Build • Upload for Distribution • Release Notes • Communicate
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
lane :beta do increment_version_code gradle(task: "clean") gradle(task: "assembleRelease") supply(track: "beta")
commit_android_version_bump changelog_from_git_commits slack push_to_git_remote end
fastlane android beta
None
None
Release Deployment
fastlane supply init
Release Checklist • Run tests • Take Screenshots • Build
• Upload for Distribution
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
lane :release do gradle(task: ”assembleDebug assembleAndroidTest") screengrab(locales: [‘en-US’, ‘fr-FR’]) gradle(task:
”clean") gradle(task: "assembleRelease") supply end
fastlane android release
Screengrab
public void screenshotOffersScreen() { onView(withId(R.id.offers)).perform(click()); Screengrab.screenshot("offers"); }
public void screenshotOffersScreen() { onView(withId(R.id.offers)).perform(click()); Screengrab.screenshot("offers"); }
None
What else?
• Send command-line parameters • Extend Fastfile by adding your
own methods • Badge app icons • Check if your working directory is clean • Send a tweet
fastlane actions --platform android fastlane action [name] fastlane search_plugins
ragunathjawahar GitHub / Gmail / Twitter