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
530
Pragmatic Machine Learning for mobile apps
onmyway133
0
400
Unit Testing in iOS
onmyway133
0
490
Getting started with Flutter
onmyway133
2
610
From Xcode plugin to Xcode extension
onmyway133
0
390
Collection Update
onmyway133
4
400
A Taste of MVVM + RxSwift
onmyway133
1
550
LLDB
onmyway133
0
390
Block
onmyway133
0
490
Other Decks in Programming
See All in Programming
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
790
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
180
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
170
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
590
Software Architecture
hschwentner
6
2.1k
Formの複雑さに立ち向かう
bmthd
1
880
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
120
Writing documentation can be fun with plugin system
okuramasafumi
0
120
Amazon S3 TablesとAmazon S3 Metadataを触ってみた / 20250201-jawsug-tochigi-s3tables-s3metadata
kasacchiful
0
180
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
580
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
650
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
420
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
We Have a Design System, Now What?
morganepeng
51
7.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Building Applications with DynamoDB
mza
93
6.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Optimizing for Happiness
mojombo
376
70k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Adopting Sorbet at Scale
ufuk
74
9.2k
Fireside Chat
paigeccino
34
3.2k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
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