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
150
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
18
Single-responsibility principle meets the real world!
ragunathjawahar
0
130
Making sense of large Java and Kotlin classes
ragunathjawahar
1
190
Building Robust Software, Episode 3
ragunathjawahar
1
120
Building Robust Software, Episode 2
ragunathjawahar
1
72
Building Robust Software (Episode 1)
ragunathjawahar
1
280
Speed as a workplace habit
ragunathjawahar
1
250
Building Robust Apps (Swift Edition)
ragunathjawahar
0
170
Re-architecture
ragunathjawahar
0
400
Other Decks in Programming
See All in Programming
Increased Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
140
マルチモジュールにおけるテスト最適化
fxwx23
0
200
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
270
GraphQL あるいは React における自律的なデータ取得について
quramy
11
2.8k
月間4.5億回再生を超える大規模サービス TVer iOSアプリのリアーキテクチャ戦略 - iOSDC2024
techtver
PRO
1
780
Hono・Prisma・AWSでGeoなAPI開発
nokonoko1203
5
660
Regular Expressions, REXML, Automata Learning
makenowjust
0
210
REXML改善のその後
naitoh
0
190
オートマトン学習しろ / Do automata learning
makenowjust
3
120
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
130
Rubyのobject_id
qnighy
6
1.3k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
Into the Great Unknown - MozCon
thekraken
28
1.4k
Done Done
chrislema
180
16k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
The Invisible Customer
myddelton
119
13k
Building Adaptive Systems
keathley
36
2.1k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Happy Clients
brianwarren
96
6.6k
Designing the Hi-DPI Web
ddemaree
278
34k
Web development in the modern age
philhawksworth
204
10k
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