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 Integration    Automate the build    Build every commit    Make build self-testing    Everyone can see the resu...
Continuous Integration    Automate the build    Build every commit    Make build self-testing    Everyone can see the resu...
http://xcloud.me/
http://jenkins-ci.org/
Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
every commiton            Snapshot / Release                             manuall                                     y
... requires different bundle identifier ...
PlistBuddy$ /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier net.wooga.XXX.snapshot"$ /usr/libexec/PlistBuddy -c "Set :...
... now we need individual certificates ...
Configurations
... update Jenkins ...
Snapshot
Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
Running Unit Tests$ xcodebuild   -project ./Game/PocketUniverse.xcodeproj   -target ***Tests   -configuration Debug -sdk i...
$ xcodebuild   -project ./Game/PocketUniverse.xcodeproj   -target ***Tests   -configuration Debug -sdk iphonesimulator   |...
Testing with Kiwihttps://github.com/MattesGroeger/OCUnit2JUnit
Validation$ /usr/bin/rake validate_configError: element decl. xpLevel, attribute type:The QName value xpLevelDefinition do...
Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
Over-The-Air                    Distribution                    Live Crash Reports                    Analyticswww.hockeya...
Upload new versioncurl   -F "status=2"   -F "notify=0"   -F "notes=New version!"   -F "notes_type=0"   -F "ipa=@XXX-InHous...
Jenkins Remote Access API
JENKINS_URL/job/JOBNAME/BUILD/api/json
github.com/MattesGroeger/jenkins-changelog
Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
Now we have more time ...
Section
Questions?  MattesGroeger  jobs.wooga.com
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Continuous Integration for iOS
Upcoming SlideShare
Loading in …5
×

Continuous Integration for iOS

1,120 views

Published on

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

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,120
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
30
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Continuous Integration for iOS

  1. 1. Continuous Integration at Wooga
  2. 2. I’m lazy!
  3. 3. I hate repetitive work!
  4. 4. I make mistakes!
  5. 5. Deploying iPhone App?
  6. 6. Let someone else do it...
  7. 7. Continuous Integration
  8. 8. Continuous Integration Automate the build Build every commit Make build self-testing Everyone can see the results of the latest build
  9. 9. Continuous Integration Automate the build Build every commit Make build self-testing Everyone can see the results of the latest build
  10. 10. http://xcloud.me/
  11. 11. http://jenkins-ci.org/
  12. 12. Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
  13. 13. every commiton Snapshot / Release manuall y
  14. 14. ... requires different bundle identifier ...
  15. 15. PlistBuddy$ /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier net.wooga.XXX.snapshot"$ /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier net.wooga.XXX.release"
  16. 16. ... now we need individual certificates ...
  17. 17. Configurations
  18. 18. ... update Jenkins ...
  19. 19. Snapshot
  20. 20. Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
  21. 21. Running Unit Tests$ xcodebuild -project ./Game/PocketUniverse.xcodeproj -target ***Tests -configuration Debug -sdk iphonesimulator | ./ocunit2junit.rb
  22. 22. $ xcodebuild -project ./Game/PocketUniverse.xcodeproj -target ***Tests -configuration Debug -sdk iphonesimulator | ./ocunit2junit.rb
  23. 23. Testing with Kiwihttps://github.com/MattesGroeger/OCUnit2JUnit
  24. 24. Validation$ /usr/bin/rake validate_configError: element decl. xpLevel, attribute type:The QName value xpLevelDefinition does notresolve to a(n) type definition. at Schema.xsd:71.Finished: FAILURE
  25. 25. Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
  26. 26. Over-The-Air Distribution Live Crash Reports Analyticswww.hockeyapp.net
  27. 27. Upload new versioncurl -F "status=2" -F "notify=0" -F "notes=New version!" -F "notes_type=0" -F "ipa=@XXX-InHouseSnapshot-${BUILD_NUMBER}.ipa" -F "dsym=@XXX.app.dSYM.zip" -H "X-HockeyAppToken: ***" https://rink.hockeyapp.net/api/2/apps/***/app_versions
  28. 28. Jenkins Remote Access API
  29. 29. JENKINS_URL/job/JOBNAME/BUILD/api/json
  30. 30. github.com/MattesGroeger/jenkins-changelog
  31. 31. Automate the buildBuild every commitMake build self-testingEveryone can see the resultsof the latest build
  32. 32. Now we have more time ...
  33. 33. Section
  34. 34. Questions? MattesGroeger jobs.wooga.com

×