Download - 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!