Continuous Integration for iOS Developer

Post on 10-May-2015

1,273 views 2 download

transcript

Continuous Integration für iOS-Entwickler

Sven Günther • it-agile GmbH

Agiles Manifest

Working Software

over comprehensive documentation

1 Click

1 Click

Schnell

10 min

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  iphonesimulator7.0  

  clean  |  build  |  test  |  analyze  |  archive

xctool

xctool  

  -­‐workspace  MyApp.xcworkspace  

  -­‐scheme  MyAppScheme  

  -­‐sdk  iphonesimulator  

  clean  |  build  |  test  |  analyze  |  archive

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.

MakeFile

!

default: test

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

ipa: compile ...

Abhängigkeiten

make

Alternativen

!

shell scripts

rake

gradle

Abhängigkeiten

Testing

Unit-Tests

Kiwi

XCTest / SenTestKit

Integration Tests

UIAutomation Frank

Zucchini

Verteilung

Provisioning Profile für Ad-Hoc DistributionDistribution Certificate

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/MyApp-­‐Info.plist

Betatest App Hosting

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'  

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