Slide 1

Slide 1 text

Introduction to Swiftlane Khoa Pham @onmyway133 onmyway133.com

Slide 2

Slide 2 text

nomad https://github.com/nomad cuptertino: App Dev Center shenzhen: Building ipa houston: push notification venice: IAP dubao: passbook nashville: iTunes Connect

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

No small feat ! ENV, SharedValues, ensureenvvars ! Remember how ! Dependencies ! Ruby stack ! Swift ! Type safe ! Swift Package Manager

Slide 5

Slide 5 text

Puma https://github.com/pumaswift/puma ☑ Combine + SwiftUI + resultBuilder ☑ Swift Package Manager ♥ Gabriel, Besar, Frederik

Slide 6

Slide 6 text

Puma Workflow { RunScript() .content("echo hello") Build() .project("MyApp") .scheme("Production") Slack() .token(SLACK_TOKEN) .send(message: ...) }

Slide 7

Slide 7 text

Swiftlane https://github.com/onmyway133/Swiftlane ! async/await ! Agrs ! AppStore Connect

Slide 8

Slide 8 text

Args -key=value -key value --key=value --key value -key1 value1 -key1 value2 order matters

Slide 9

Slide 9 text

async/await let result1 = try await action1.run() let result2 = try await.action2.run(result1)

Slide 10

Slide 10 text

Swiftlane var workflow = Workflow() workflow.directory = Settings.fs .homeDirectory() .appendingPathComponent("Projects/swiftlane/Examples/MyApp") workflow.xcodeApp = URL(string: "/Applications/Xcode.app")

Slide 11

Slide 11 text

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 ) )

Slide 12

Slide 12 text

AppStore Connect https://github.com/onmyway133/AppStoreConnect ! OpenAPI specification ! Json Web Token

Slide 13

Slide 13 text

How to run Swiftlane import Swiftlane —Executable Swift Package —MacOS Command Line Tool application