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
200
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
620
Pragmatic Machine Learning for mobile apps
onmyway133
0
460
Unit Testing in iOS
onmyway133
0
580
Getting started with Flutter
onmyway133
2
680
From Xcode plugin to Xcode extension
onmyway133
0
460
Collection Update
onmyway133
4
460
A Taste of MVVM + RxSwift
onmyway133
1
630
LLDB
onmyway133
0
450
Block
onmyway133
0
610
Other Decks in Programming
See All in Programming
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
200
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
320
Ruby x Terminal
a_matsuda
7
590
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.2k
あなたはユーザーではない #PdENight
kajitack
4
340
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
400
文字コードの話
qnighy
44
17k
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
490
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
110
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
2
150
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
2.8k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
First, design no harm
axbom
PRO
2
1.1k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
エンジニアに許された特別な時間の終わり
watany
106
240k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
400
My Coaching Mixtape
mlcsv
0
67
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
Game over? The fight for quality and originality in the time of robots
wayneb77
1
130
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
210
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