45
Continuous Integration für iOS-Entwickler Sven Günther • it-agile GmbH

Continuous Integration for iOS Developer

Embed Size (px)

Citation preview

Page 1: Continuous Integration for iOS Developer

Continuous Integration für iOS-Entwickler

Sven Günther • it-agile GmbH

Page 2: Continuous Integration for iOS Developer

Agiles Manifest

Working Software

over comprehensive documentation

Page 3: Continuous Integration for iOS Developer
Page 4: Continuous Integration for iOS Developer

1 Click

Page 5: Continuous Integration for iOS Developer

1 Click

Page 6: Continuous Integration for iOS Developer

Schnell

10 min

Page 7: Continuous Integration for iOS Developer

Visualisiert

Page 8: Continuous Integration for iOS Developer

From Scratch

Page 9: Continuous Integration for iOS Developer

voll automatisiert

Page 10: Continuous Integration for iOS Developer

nach jedem Commit

Page 11: Continuous Integration for iOS Developer

Selbst testend

Page 12: Continuous Integration for iOS Developer

Vorgehen

Page 13: Continuous Integration for iOS Developer

Vorgehen

Page 14: Continuous Integration for iOS Developer

Vorgehen

Page 15: Continuous Integration for iOS Developer

Vorgehen

Page 16: Continuous Integration for iOS Developer

Vorgehen

Page 17: Continuous Integration for iOS Developer

Vorgehen

Page 18: Continuous Integration for iOS Developer

Tools

Page 19: Continuous Integration for iOS Developer

Source Code

Page 20: Continuous Integration for iOS Developer

Commandline Builds

Page 21: Continuous Integration for iOS Developer

xcodebuild

Page 22: Continuous Integration for iOS Developer

xcodebuild  

  -­‐workspace  MyApp.xcworkspace  

  -­‐scheme  MyAppScheme  

  -­‐sdk  iphonesimulator7.0  

  clean  |  build  |  test  |  analyze  |  archive

Page 23: Continuous Integration for iOS Developer

xctool

Page 24: Continuous Integration for iOS Developer

xctool  

  -­‐workspace  MyApp.xcworkspace  

  -­‐scheme  MyAppScheme  

  -­‐sdk  iphonesimulator  

  clean  |  build  |  test  |  analyze  |  archive

Page 25: Continuous Integration for iOS Developer

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.

Page 26: Continuous Integration for iOS Developer

MakeFile

!

default: test

test: xcodebuild -workspace Sijox.xcworkspace -scheme Sijox \ -sdk iphonesimulator7.0 clean test

ipa: compile ...

Abhängigkeiten

make

Page 27: Continuous Integration for iOS Developer

Alternativen

!

shell scripts

rake

gradle

Abhängigkeiten

Page 28: Continuous Integration for iOS Developer

Testing

Page 29: Continuous Integration for iOS Developer

Unit-Tests

Kiwi

XCTest / SenTestKit

Page 30: Continuous Integration for iOS Developer

Integration Tests

UIAutomation Frank

Zucchini

Page 31: Continuous Integration for iOS Developer

Verteilung

Page 32: Continuous Integration for iOS Developer

Provisioning Profile für Ad-Hoc DistributionDistribution Certificate

Page 33: Continuous Integration for iOS Developer

Shenzen from Nomad cli

http://nomad-cli.com

!

ipa  build       -­‐c  Release     -­‐s  MyAppScheme

Page 34: Continuous Integration for iOS Developer

Build-Nr. aktualisieren

/usr/libexec/PlistBuddy   -­‐c  "Set  :CFBundleVersion  ${BUILD_NUMBER}"     MyApp/MyApp-­‐Info.plist

Page 35: Continuous Integration for iOS Developer

Betatest App Hosting

Page 36: Continuous Integration for iOS Developer

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'  

Page 37: Continuous Integration for iOS Developer

Jobsteuerung

Page 38: Continuous Integration for iOS Developer

Xcode Bots

Self managed CI-Server

Page 39: Continuous Integration for iOS Developer

Xcode Bots

Page 40: Continuous Integration for iOS Developer

Jenkins

Page 41: Continuous Integration for iOS Developer

hosted-ci.com

buildozer.io

travis-ci.org

Hosted CI

Page 42: Continuous Integration for iOS Developer

Goodies

Page 43: Continuous Integration for iOS Developer

Screenshots

Page 44: Continuous Integration for iOS Developer

CI ist kein Tool sondern eine Praktik

Page 45: Continuous Integration for iOS Developer

… vielen Dank.

Fragen?

@iNevs!!

[email protected]