Upload
mattes-groeger
View
1.042
Download
2
Tags:
Embed Size (px)
DESCRIPTION
In this talk at the iOS User Group Berlin, I show how we realize continuous integration for iOS at Wooga. It covers topics ranging from setup over configuration, testing to distribution. Watch the video here: http://www.youtube.com/watch?v=wUROfOiCNQw&feature=plcp
Citation preview
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