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
140
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
540
Pragmatic Machine Learning for mobile apps
onmyway133
0
420
Unit Testing in iOS
onmyway133
0
510
Getting started with Flutter
onmyway133
2
620
From Xcode plugin to Xcode extension
onmyway133
0
400
Collection Update
onmyway133
4
410
A Taste of MVVM + RxSwift
onmyway133
1
570
LLDB
onmyway133
0
400
Block
onmyway133
0
500
Other Decks in Programming
See All in Programming
WordPress Playground for Developers
iambherulal
0
120
AIコードエディタの基盤となるLLMのFlutter性能評価
alquist4121
0
170
ミリしらMCP勉強会
watany
4
630
エンジニア未経験が最短で戦力になるためのTips
gokana
0
240
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
3.6k
S3静的ホスティング+Next.js静的エクスポート で格安webアプリ構築
iharuoru
0
200
SideKiqでジョブが二重起動した事象を深堀りしました
t_hatachi
0
270
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
500
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
120
海外のアプリで見かけたかっこいいTransitionを真似てみる
shogotakasaki
1
140
Devin , 正しい付き合い方と使い方 / Living and Working with Devin
yukinagae
3
760
Agentic Applications with Symfony
el_stoffel
1
160
Featured
See All Featured
Embracing the Ebb and Flow
colly
85
4.6k
Adopting Sorbet at Scale
ufuk
75
9.3k
Why Our Code Smells
bkeepers
PRO
336
57k
Writing Fast Ruby
sferik
628
61k
Agile that works and the tools we love
rasmusluckow
328
21k
Six Lessons from altMBA
skipperchong
27
3.7k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.5k
Unsuck your backbone
ammeep
670
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
118
51k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
360
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
177
52k
A better future with KSS
kneath
239
17k
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