Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to Swiftlane
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Khoa Pham
February 18, 2022
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Swiftlane
Introduction to Swiftlane
https://github.com/onmyway133/Swiftlane
Khoa Pham
February 18, 2022
More Decks by Khoa Pham
See All by Khoa Pham
Better AppStore rating
onmyway133
0
680
Pragmatic Machine Learning for mobile apps
onmyway133
0
510
Unit Testing in iOS
onmyway133
0
630
Getting started with Flutter
onmyway133
2
750
From Xcode plugin to Xcode extension
onmyway133
0
500
Collection Update
onmyway133
4
510
A Taste of MVVM + RxSwift
onmyway133
1
680
LLDB
onmyway133
0
510
Block
onmyway133
0
660
Other Decks in Programming
See All in Programming
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.8k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
Performance Optimization With LLMs
xleitix
0
250
Railsバージョンを4倍にした話
optim
0
970
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
310
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
410
AI Augmentation Techniques with Liberty
ivargrimstad
1
410
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
300
GraphQL の onError と Nullability のこれから
quramy
0
210
Seven New Principles of Software Engineering
yegor256
0
470
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
740
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
340
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Optimizing for Happiness
mojombo
378
71k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Between Models and Reality
mayunak
4
570
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Design in an AI World
tapps
1
390
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Transcript
Introduction to Swiftlane Khoa Pham @onmyway133 onmyway133.com
nomad https://github.com/nomad cuptertino: App Dev Center shenzhen: Building ipa houston:
push notification venice: IAP dubao: passbook nashville: iTunes Connect
fastlane https://fastlane.tools/ sigh: provisiong profiles produce: create apps boarding: beta
testers scan: run tests gym: build deliver: screenshots & metadata spaceship: AppStore Connect APIs
No small feat ! ENV, SharedValues, ensureenvvars ! Remember how
! Dependencies ! Ruby stack ! Swift ! Type safe ! Swift Package Manager
Puma https://github.com/pumaswift/puma ☑ Combine + SwiftUI + resultBuilder ☑ Swift
Package Manager ♥ Gabriel, Besar, Frederik
Puma Workflow { RunScript() .content("echo hello") Build() .project("MyApp") .scheme("Production") Slack()
.token(SLACK_TOKEN) .send(message: ...) }
Swiftlane https://github.com/onmyway133/Swiftlane ! async/await ! Agrs ! AppStore Connect
Args -key=value -key value --key=value --key value -key1 value1 -key1
value2 order matters
async/await let result1 = try await action1.run() let result2 =
try await.action2.run(result1)
Swiftlane var workflow = Workflow() workflow.directory = Settings.fs .homeDirectory() .appendingPathComponent("Projects/swiftlane/Examples/MyApp")
workflow.xcodeApp = URL(string: "/Applications/Xcode.app")
Swiftlane guard let issuerId = Settings.env["ASC_ISSUER_ID"], let privateKeyId = Settings.env["ASC_PRIVATE_KEY_ID"],
let privateKey = Settings.env["ASC_PRIVATE_KEY"] else { return } let asc = try ASC( credential: AppStoreConnect.Credential( issuerId: issuerId, privateKeyId: privateKeyId, privateKey: privateKey ) )
AppStore Connect https://github.com/onmyway133/AppStoreConnect ! OpenAPI specification ! Json Web Token
How to run Swiftlane import Swiftlane —Executable Swift Package —MacOS
Command Line Tool application