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
Introduction to Swiftlane
Search
Khoa Pham
February 18, 2022
Programming
0
120
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
370
Pragmatic Machine Learning for mobile apps
onmyway133
0
300
Unit Testing in iOS
onmyway133
0
380
Getting started with Flutter
onmyway133
2
500
From Xcode plugin to Xcode extension
onmyway133
0
290
Collection Update
onmyway133
4
300
A Taste of MVVM + RxSwift
onmyway133
1
450
LLDB
onmyway133
0
280
Block
onmyway133
0
340
Other Decks in Programming
See All in Programming
Migrating to Signals: A Practical Workshop
manfredsteyer
PRO
0
280
フロントエンドパフォーマンス 入門
shouta2
7
1.5k
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
100
Compiling Python to WebAssembly with py2wasm
syrusakbary
0
130
Creating Retro-Style Photos Using Swift
ski
1
340
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
270
Why 1 + 1 = 2 in Swift?
1plus4
1
240
CSRF対策のやり方、そろそろアップデートしませんか / Update your knowledge of CSRF protection
hiro_y
25
14k
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
5
2.2k
Understanding Ast By Looking
inouehi
0
120
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
オブジェクトしこう
okuramasafumi
2
130
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.8k
Code Review Best Practice
trishagee
54
15k
How GitHub (no longer) Works
holman
301
140k
BBQ
matthewcrist
78
8.7k
How to name files
jennybc
62
92k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
WebSockets: Embracing the real-time Web
robhawkes
59
6.9k
Building Effective Engineering Teams - LeadDev
addyosmani
25
1.8k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
Building Adaptive Systems
keathley
29
1.8k
Why Our Code Smells
bkeepers
PRO
330
56k
Become a Pro
speakerdeck
PRO
8
4.4k
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