Continuous Integration for iOS (iOS User Group Berlin)

2,480 views

Published on

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/MattesGroeger

Published in: Technology
  • Be the first to comment

Continuous Integration for iOS (iOS User Group Berlin)

  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

×