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
Tailored Fastlane
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Flávio Caetano
April 05, 2018
Programming
60
0
Share
Tailored Fastlane
Learn how to customize Fastlane creating your own actions
https://github.com/fjcaetano/talks
Flávio Caetano
April 05, 2018
More Decks by Flávio Caetano
See All by Flávio Caetano
Siri Suggestions & Shortcuts
fjcaetano
1
200
Animations: Swift vs React Native
fjcaetano
2
470
Fastlane Sob Medida
fjcaetano
1
150
React Native 4 Dummies
fjcaetano
0
64
Bugreport 101
fjcaetano
0
47
Other Decks in Programming
See All in Programming
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
170
安いハードウェアでVulkan
fadis
1
940
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
170
Feature Toggle は捨てやすく使おう
gennei
0
510
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.9k
Rethinking API Platform Filters
vinceamstoutz
0
11k
Running Swift without an OS
kishikawakatsumi
0
710
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
250
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
230
Swift Concurrency Type System
inamiy
0
420
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Claude Code のすすめ
schroneko
67
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
180
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
97
Building the Perfect Custom Keyboard
takai
2
720
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
490
Transcript
Tailored Fastlane Flávio Caetano
Fastlane
1. Run tests 2. Select certificates 3. Archive ipa 4.
Capture screenshots 5. Upload to iTunes Connect 6. Notify on Slack
1. Run tests 2. Select certificates 3. Archive ipa 4.
Capture screenshots 5. Upload to iTunes Connect 6. Notify on Slack $ fastlane ios deploy
1. Run tests 2. Select certificates 3. Archive ipa 4.
Capture screenshots 5. Upload to iTunes Connect 6. Notify on Slack $ fastlane ios deploy 1. run_tests(scheme: “Tests”) 2. match(type: “distribution”) 3. build_app(scheme: “App”) 4. capture_screenshots 5. deliver 6. slack(message: “!”)
Fastfile =
Functions
desc "Runs all the tests" lane :test do run_tests( ...
devices: [ "iPhone X (11.2)", "iPhone 7 (10.3)", "iPhone SE (9.0)", ] ... ) end
desc "Runs all the tests" lane :test do run_tests( ...
devices: [ "iPhone X (~> 11.2)", "iPhone 7 (^ 10.3)", "iPhone SE (== 9.0)", ] ... ) end
1. Device List 2. FastlaneCore::Simulator 3. Gem::Version 4. Gem::Requirement
def select_similar_simulator(args) args.map { |device_string| pieces = device_string.split(' (') FastlaneCore::Simulator.all
.select { |s| s.name == pieces.first } .sort_by { |s| Gem::Version.create(s.os_version) } .detect { |s| Gem::Requirement.new(pieces[1].tr('()', '')) .satisfied_by?(Gem::Version.create(s.os_version)) } } .compact .map { |s| "#{s.name} (#{s.ios_version})"} end
desc "Runs all the tests" lane :test do run_tests( ...
devices: self.select_similar_simulator([ "iPhone X (~> 11.2)", "iPhone 7 (~> 10.3)", "iPhone SE (~> 9.0)", ]) ... ) end
Actions
sh(“echo”, “hello world!”) Runs a shell command
sh(“echo”, “\a”) Runs a shell command
sh(“open”, “http://someurl.com”) Runs a shell command
$ fastlane new_action {name}
class MyAction < Action def self.run(params) def self.available_options def self.output
# docs def self.return_value def self.description def self.details def self.authors def self.category def self.is_supported?(platform)
03 SWIFT PACKAGE MANAGER ACTION
class SpmAction < Action def self.run(params) cmd = [“swift”] cmd
<< "--build-path #{params[:build_path]}" if params[:build_path] cmd << "--package-path #{params[:package_path]}" if params[:package_path] cmd << "--configuration #{params[:configuration]}” if params[:configuration] cmd << "--verbose" if params[:verbose] cmd << params[:command] sh(cmd) end
def self.available_options [FastlaneCore::ConfigItem.new(key: :configuration, env_name: “FL_SPM_CONFIGURATION", description: "Build with configuration
(debug|release) [default: debug]”, optional: true, verify_block: proc do |value| UI.user_error!("Please pass a valid configuration: (debug|release)”) unless valid_configurations.include?(value) end), ... ] end def self.valid_configurations [“debug”, “release”] end
03 MANAGING ACTIONS
${PROJ}/fastlane/actions
None
[email protected]
https://github.com/fjcaetano Flávio Caetano