+ All Categories
Home > Technology > Continuous, Reproducible Delivery with Fastlane

Continuous, Reproducible Delivery with Fastlane

Date post: 09-Jan-2017
Category:
Upload: twitter-developers
View: 245 times
Download: 0 times
Share this document with a friend
44
@asfalcone HOW WOULD YOU LIKE 2 EXTRA HOURS EVERY WEEK? #TapIntoTwitter
Transcript
Page 1: Continuous, Reproducible Delivery with Fastlane

@asfalcone

HOW WOULD YOU LIKE 2 EXTRA HOURS EVERY WEEK?

#TapIntoTwitter

Page 2: Continuous, Reproducible Delivery with Fastlane

@asfalcone

SUPERCHARGING YOUR MOBILE APP RELEASE

WITH FASTLANE

#TapIntoTwitter

Page 3: Continuous, Reproducible Delivery with Fastlane

Andrea Falcone Senior Software Engineer

Twitter@asfalcone

#TapIntoTwitter

Page 4: Continuous, Reproducible Delivery with Fastlane

@asfalcone

• “We can’t release, Andrea is currently on vacation” • “The provisioning profiles doesn’t contain all

devices?” • “We can’t release an update, the build is broken” • “We need the latest screenshots for the website” • “Uh, that bug fix is not worth the pain of a new

release”

Page 5: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Provisioning profiles

Manage deployment alerts

Distribute beta builds

Push to Google Play

Push to App Store

Check for regressions

Manage beta groupsReview in-app events

Monitor app deployment

Debug production issues

Code Signing

Gather feedback

Synchronized buildsKeys

Reproducible builds

QA

Customer email outreach Push certs

Continuous Integration + setup

Testing before release

Screenshots

Build times

Page 6: Continuous, Reproducible Delivery with Fastlane

@asfalcone

fastlane

Page 7: Continuous, Reproducible Delivery with Fastlane

@asfalcone

! " ♻Avoid Human

Error Reproducible Reusable

Page 8: Continuous, Reproducible Delivery with Fastlane

@asfalcone

APP STORE & GOOGLE PLAY

RELEASES

BETA DEPLOYMENT

Page 9: Continuous, Reproducible Delivery with Fastlane

@asfalcone

BETA DEPLOYMENT

Page 10: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Beta Deployment1. Version Bump 2. Commit & Push 3. Provisioning Profile 4. Build 5. Export 6. Upload 7. Add Release Notes 8. Distribute

Page 11: Continuous, Reproducible Delivery with Fastlane
Page 12: Continuous, Reproducible Delivery with Fastlane

@asfalcone

$ %& 'Code

Signing Certificate

Provisioning Profile

Building & Signing Signed IPA

Page 13: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Code Signing

Certificate

Provisioning Profile

Building & Signing Signed IPA

Page 14: Continuous, Reproducible Delivery with Fastlane

@asfalcone

$ cert$ sigh$ gym

Page 15: Continuous, Reproducible Delivery with Fastlane

@asfalcone

1 Instruction 1

2 Instruction 2

3 Instruction 3

4 Instruction 4

5 Instruction 5

Configure Your Fastfile

Page 16: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 17: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Beta Deployment1. Version Bump 2. Commit & Push 3. Provisioning Profile 4. Build 5. Export 6. Upload 7. Add Release Notes 8. Distribute

Page 18: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 19: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 20: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 21: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 22: Continuous, Reproducible Delivery with Fastlane

@asfalcone

$ fastlane beta

Page 23: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 24: Continuous, Reproducible Delivery with Fastlane

@asfalcone

APP RELEASES

Page 25: Continuous, Reproducible Delivery with Fastlane

@asfalcone

SCREENSHOTS

Page 26: Continuous, Reproducible Delivery with Fastlane

@asfalcone

250screenshots

Page 27: Continuous, Reproducible Delivery with Fastlane

...

button.tap()snapshot(“1LandingScreen")

...

Page 28: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 29: Continuous, Reproducible Delivery with Fastlane

@asfalcone

...

public void testTakeScreenshot() { onView(withId(R.id.fab)).perform(click());Screengrab.screenshot(“after_fab_click”);

}

...

Page 30: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 31: Continuous, Reproducible Delivery with Fastlane

@asfalcone

DEPLOYMENT

Page 32: Continuous, Reproducible Delivery with Fastlane

@asfalcone

?!

Page 33: Continuous, Reproducible Delivery with Fastlane

@asfalcone

?!

Page 34: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 35: Continuous, Reproducible Delivery with Fastlane

@asfalcone

?!

Page 36: Continuous, Reproducible Delivery with Fastlane

@asfalcone

$ fastlane release

Page 37: Continuous, Reproducible Delivery with Fastlane
Page 38: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Provisioning profiles

Manage deployment alerts

Distribute beta builds

Push to Google Play

Push to App Store

Check for regressions

Manage beta groupsReview in-app events

Monitor app deployment

Debug production issues

Code Signing

Gather feedback

Synchronized buildsKeys

Reproducible builds

QA

Customer email outreach Push certs

Continuous Integration + setup

Testing before release

Screenshots

Build times

Page 39: Continuous, Reproducible Delivery with Fastlane

@asfalcone

$ gem install fastlane

Page 40: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 41: Continuous, Reproducible Delivery with Fastlane

@asfalcone

Page 42: Continuous, Reproducible Delivery with Fastlane

@asfalcone

https://github.com/fastlane/examples

Page 43: Continuous, Reproducible Delivery with Fastlane

@asfalcone

fastlanehttps://fastlane.tools

Page 44: Continuous, Reproducible Delivery with Fastlane

Thank You!

@asfalcone


Recommended