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
Ragunath Jawahar
February 25, 2017
Programming
0
160
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
37
Single-responsibility principle meets the real world!
ragunathjawahar
0
140
Making sense of large Java and Kotlin classes
ragunathjawahar
1
250
Building Robust Software, Episode 3
ragunathjawahar
1
160
Building Robust Software, Episode 2
ragunathjawahar
1
120
Building Robust Software (Episode 1)
ragunathjawahar
1
340
Speed as a workplace habit
ragunathjawahar
1
300
Building Robust Apps (Swift Edition)
ragunathjawahar
0
230
Re-architecture
ragunathjawahar
0
460
Other Decks in Programming
See All in Programming
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
14k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
190
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
180
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
860
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
590
Porting a visionOS App to Android XR
akkeylab
0
590
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.7k
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
640
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
XP, Testing and ninja testing
m_seki
3
250
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
13
4.8k
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
For a Future-Friendly Web
brad_frost
179
9.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
830
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
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