Continuous Integration
für iOS-Entwickler

Sven Günther • it-agile GmbH
Working Software

over comprehensive
documentation

Agiles Manifest
1 Click
1 Click
10 min

Schnell
Visualisiert
From Scratch
voll automatisiert
✔
nach jedem Commit
Selbst testend
Vorgehen
Vorgehen
Vorgehen
Vorgehen
Vorgehen
Vorgehen
Tools
Source Code
Commandline Builds
xcodebuild
xcodebuild	
  
	
   -­‐workspace	
  MyApp.xcworkspace	
  
	
   -­‐scheme	
  MyAppScheme	
  
	
   -­‐sdk	
  iphonesimulator...
xctool
xctool	
  
	
   -­‐workspace	
  MyApp.xcworkspace	
  
	
   -­‐scheme	
  MyAppScheme	
  
	
   -­‐sdk	
  iphonesimulator	
  ...
Reporters
• pretty: (default) a text-based reporter that uses ANSI colors and unicode symbols for
pretty output.
• plain: ...
make
MakeFile
!
default: test
test:

xcodebuild -workspace Sijox.xcworkspace -scheme Sijox 

-sdk iphonesimulator7.0 clean...
Alternativen
!

shell scripts
rake
gradle

Abhängigkeiten
Testing
XCTest / SenTestKit

Kiwi

Unit-Tests
UIAutomation

Frank

Zucchini

Integration Tests
Verteilung
Distribution Certificate

Provisioning Profile
für Ad-Hoc Distribution
Shenzen from Nomad cli
http://nomad-cli.com
!

ipa	
  build	
  

	
   	
   -­‐c	
  Release

	
   	
   -­‐s	
  MyAppScheme
Build-Nr. aktualisieren
/usr/libexec/PlistBuddy

	
   -­‐c	
  "Set	
  :CFBundleVersion	
  ${BUILD_NUMBER}"	
  

	
   MyApp...
Betatest App Hosting
Shenzen from Nomad cli
http://nomad-cli.com
!

ipa	
  distribute:hockeyapp	
  

	
   -­‐f	
  MyApp.ipa	
  

	
   -­‐d	
  M...
Jobsteuerung
Xcode Bots

Self managed CI-Server
Xcode Bots
Jenkins
hosted-ci.com
buildozer.io

travis-ci.org

Hosted CI
Goodies
Screenshots
CI ist kein Tool sondern eine Praktik
… vielen Dank.

Fragen?

@iNevs!
!

sven.guenther@it-agile.de
Continuous Integration for iOS Developer
Upcoming SlideShare
Loading in …5
×

Continuous Integration for iOS Developer

1,475
-1

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
1,475
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Continuous Integration for iOS Developer

  1. 1. Continuous Integration für iOS-Entwickler Sven Günther • it-agile GmbH
  2. 2. Working Software over comprehensive documentation Agiles Manifest
  3. 3. 1 Click
  4. 4. 1 Click
  5. 5. 10 min Schnell
  6. 6. Visualisiert
  7. 7. From Scratch
  8. 8. voll automatisiert
  9. 9. ✔ nach jedem Commit
  10. 10. Selbst testend
  11. 11. Vorgehen
  12. 12. Vorgehen
  13. 13. Vorgehen
  14. 14. Vorgehen
  15. 15. Vorgehen
  16. 16. Vorgehen
  17. 17. Tools
  18. 18. Source Code
  19. 19. Commandline Builds
  20. 20. xcodebuild
  21. 21. xcodebuild     -­‐workspace  MyApp.xcworkspace     -­‐scheme  MyAppScheme     -­‐sdk  iphonesimulator7.0     clean  |  build  |  test  |  analyze  |  archive
  22. 22. xctool
  23. 23. xctool     -­‐workspace  MyApp.xcworkspace     -­‐scheme  MyAppScheme     -­‐sdk  iphonesimulator     clean  |  build  |  test  |  analyze  |  archive
  24. 24. Reporters • pretty: (default) a text-based reporter that uses ANSI colors and unicode symbols for pretty output. • plain: like pretty, but with with no colors or Unicode. • phabricator: outputs a JSON array of build/test results which can be fed into the Phabricator code-review tool. • junit: produces a JUnit/xUnit compatible XML file with test results. • json-stream: a stream of build/test events as JSON dictionaries, one per line (example output). • json-compilation-database: outputs a JSON Compilation Database of build events which can be used by Clang Tooling based tools, e.g. OCLint.
  25. 25. make MakeFile ! default: test test:
 xcodebuild -workspace Sijox.xcworkspace -scheme Sijox 
 -sdk iphonesimulator7.0 clean test ipa: compile
 ... Abhängigkeiten
  26. 26. Alternativen ! shell scripts rake gradle Abhängigkeiten
  27. 27. Testing
  28. 28. XCTest / SenTestKit Kiwi Unit-Tests
  29. 29. UIAutomation Frank Zucchini Integration Tests
  30. 30. Verteilung
  31. 31. Distribution Certificate Provisioning Profile für Ad-Hoc Distribution
  32. 32. Shenzen from Nomad cli http://nomad-cli.com ! ipa  build  
     -­‐c  Release
     -­‐s  MyAppScheme
  33. 33. Build-Nr. aktualisieren /usr/libexec/PlistBuddy
   -­‐c  "Set  :CFBundleVersion  ${BUILD_NUMBER}"  
   MyApp/MyApp-­‐Info.plist
  34. 34. Betatest App Hosting
  35. 35. Shenzen from Nomad cli http://nomad-cli.com ! ipa  distribute:hockeyapp  
   -­‐f  MyApp.ipa  
   -­‐d  MyApp.app.dSYM.zip  
   -­‐t  MY_APP_TOKEN  
   -­‐m  'Release  Notes'  
  36. 36. Jobsteuerung
  37. 37. Xcode Bots Self managed CI-Server
  38. 38. Xcode Bots
  39. 39. Jenkins
  40. 40. hosted-ci.com buildozer.io travis-ci.org Hosted CI
  41. 41. Goodies
  42. 42. Screenshots
  43. 43. CI ist kein Tool sondern eine Praktik
  44. 44. … vielen Dank. Fragen? @iNevs! ! sven.guenther@it-agile.de
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×