continuous integration for ios (ios user group berlin)
Post on 20-Oct-2014
2.352 views
DESCRIPTION
In this talk at the iOS User Group Berlin, Mattes Groeger shows how Continuous Integration for iOS is realized at Wooga. It covers topics ranging from setup over configuration, testing to distribution. You can follow him on Twitter: https://twitter.com/MattesGroegerTRANSCRIPT
Continuous Integration at Wooga
I’m lazy!
I hate repetitive work!
I make mistakes!
Deploying iPhone App?
Let someone else do it...
Continuous Integration
Continuous IntegrationAutomate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest build
Automate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest build
Automate the build
Continuous Integration
Automate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest build
Build every commit
Snapshot / Releaseon every commit
manually
... requires di!erent bundle identifier ...
PlistBuddy
$ /usr/libexec/PlistBuddy \-c "Set :CFBundleIdentifier net.wooga.XXX.snapshot"
$ /usr/libexec/PlistBuddy \-c "Set :CFBundleIdentifier net.wooga.XXX.release"
... now we need individual certificates ...
Configurations
... update Jenkins ...
Snapshot
Automate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest build
Make build self-testing
$ xcodebuild \ -project ./Game/PocketUniverse.xcodeproj \ -target ***Tests \ -configuration Debug -sdk iphonesimulator \ | ./ocunit2junit.rb
Running Unit Tests
$ xcodebuild \ -project ./Game/PocketUniverse.xcodeproj \ -target ***Tests \ -configuration Debug -sdk iphonesimulator \ | ./ocunit2junit.rb
https://github.com/MattesGroeger/OCUnit2JUnit
Testing with Kiwi
Validation
$ /usr/bin/rake validate_config
Error: element decl. 'xpLevel', attribute 'type': The QName value 'xpLevelDefinition' does not resolve to a(n) type definition. at Schema.xsd:71.
Finished: FAILURE
Automate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest buildEveryone can see the results of the latest build
www.hockeyapp.net
Over-The-Air Distribution
Live Crash Reports
Analytics
Upload new version
curl \ -F "status=2" \ -F "notify=0" \ -F "notes=New version!" \ -F "notes_type=0" \ -F "ipa=@XXX-InHouseSnapshot-${BUILD_NUMBER}.ipa" \ -F "[email protected]" \ -H "X-HockeyAppToken: ***" \ https://rink.hockeyapp.net/api/2/apps/***/app_versions
Jenkins Remote Access API
JENKINS_URL/job/JOBNAME/BUILD/api/json
github.com/MattesGroeger/jenkins-changelog
Automate the build
Build every commit
Make build self-testing
Everyone can see the results of the latest build
Now we have more time ...
Section
Questions?MattesGroegerjobs.wooga.com