Continous Integration for iOS Projects

Post on 22-Jan-2018

191 views 0 download

Transcript of Continous Integration for iOS Projects

Continuos Delivery for

iOS Projects

With a commit.

How does continuos delivery begin?

Continuos Delivery

How does that translate for your iOS project?

• “We cannot release now - our lead developer is on vacation.”

• “We’ll have to wait for marketing to update the screenshots”

• “Sorry, I forgot to add your device to the provisioning profile.”

• “We’ll release this fix with the next build… next year”

Your usual release day

Unit testing

Automation testing

Build the app

Update provisioning profiles

Update push notification

certificates

Create new

screenshots Update release notes

Check if the certificates are valid

Signing issues!!!!!!!!Beta testing F&@#!!!!

If it's complicated… simplify

• Your CI server usually had to contain a lot of tools:

• xctool

• PMD

• Slather

• oclint

• gcovr

• Hockey app, Crashlitycs, Testflight plugins

• Cocoapods or Carthage installed

• Keychain plugin

• Slack or HipChat plugin

If it's complicated… simplify

• … and a lot of scripts:

xcodebuild clean archive -archivePath build/MyApp \

-scheme MyApp

xcodebuild -exportArchive \

-exportFormat ipa \

-archivePath "build/MyApp.xcarchive" \

-exportPath "build/MyApp.ipa" \

-exportProvisioningProfile

"ProvisioningProfileName"

fastlane

• Automates your release process

• Connect all build tools together

• Define multiple lanes for different release needs

• Third party integrations

• Extendable

• 100% open-source

Meet the fastlane family

fastlane

• Configure a Gymfile

scheme "Example"

sdk "iphoneos9.0"

clean true

output_directory "./build"

output_name "MyApp"

• Build

gym

fastlane

• Creates certificates for you

• You will still need to store your

private key

fastlane

• Downloads and updates your

provisioning profiles

• You can specify which one

(development, ad hoc, app store)

fastlane

• Updates your Push Notifications

certificates

• You can specify which one

• You can set a custom password for

them

fastlane

• Runs your tests

• You can specify the output

• Generates reports for you

fastlane

• Generates screenshots for you

• Based on UI Automation tests

• Multiple localizations

• Multiple devices

fastlane

• Create beautiful marketing

images in no time!

• Adds the generated image from

snapshot into a labeled frame

fastlane

• Creates the app in iTunes

Connect for you

fastlane

• Create a Deliver file

• Takes care of the release for

you

Third party integrations

Your release day from now

onlane :appstore do

increment_build_number

cocoapods

xctool

snapshot

sigh

deliver

sh "./customScript.sh"

slack

end

–Dee Dee, Dexter’s Laboratory

“What does this button do?”

Any questions?

Thank you!