Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Introduction to Swiftlane
Khoa Pham
February 18, 2022
Programming
0
35
Introduction to Swiftlane
Introduction to Swiftlane
https://github.com/onmyway133/Swiftlane
Khoa Pham
February 18, 2022
Tweet
Share
More Decks by Khoa Pham
See All by Khoa Pham
Better AppStore rating
onmyway133
0
220
Pragmatic Machine Learning for mobile apps
onmyway133
0
160
Unit Testing in iOS
onmyway133
0
220
Getting started with Flutter
onmyway133
2
320
From Xcode plugin to Xcode extension
onmyway133
0
150
Collection Update
onmyway133
4
180
A Taste of MVVM + RxSwift
onmyway133
1
330
LLDB
onmyway133
0
150
Block
onmyway133
0
190
Other Decks in Programming
See All in Programming
heyにおけるCI/CDの現状と課題
fufuhu
3
560
シェーダー氷山発掘記
logilabo
0
150
io22 extended What's new in app performance
veronikapj
0
340
NEWT.net: Frontend Technology Selection
xpromx
0
250
GDG Seoul IO Extended 2022 - Android Compose
taehwandev
0
320
オブジェクト指向で挫折する初学者へ
deepoil
0
170
Client-Side Field-Level Encryption for Apache Kafka Connect @ VoxxedDays Luxembourg 2022
hpgrahsl
0
110
「混ぜるな危険」を推進する設計
minodriven
7
1.9k
VisualProgramming_GoogleHome_LINE
nearmugi
1
230
Swift Regex
usamik26
0
190
Lancersをコンテナへ本番移行する取り組み
rvirus0817
1
390
Licences open source : entre guerre de clochers et radicalité
pylapp
2
510
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
15
36k
Web development in the modern age
philhawksworth
197
9.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
105
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
Thoughts on Productivity
jonyablonski
43
2.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
GraphQLとの向き合い方2022年版
quramy
16
8.3k
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
Ruby is Unlike a Banana
tanoku
91
9.2k
What's new in Ruby 2.0
geeforr
336
30k
Writing Fast Ruby
sferik
612
57k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.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