continuous integration for ios

Post on 14-Nov-2014

1.037 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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 IntegrationAutomate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest build

Automate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest build

Automate the build

Continuous Integration

http://xcloud.me/

http://jenkins-ci.org/

Automate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest build

Build every commit

Snapshot / Releaseon every commit

manually

... requires di!erent bundle identifier ...

PlistBuddy

$ /usr/libexec/PlistBuddy \-c "Set :CFBundleIdentifier net.wooga.XXX.snapshot"

$ /usr/libexec/PlistBuddy \-c "Set :CFBundleIdentifier net.wooga.XXX.release"

... now we need individual certificates ...

Configurations

... update Jenkins ...

Snapshot

Automate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest build

Make build self-testing

$ xcodebuild \ -project ./Game/PocketUniverse.xcodeproj \ -target ***Tests \ -configuration Debug -sdk iphonesimulator \ | ./ocunit2junit.rb

Running Unit Tests

$ xcodebuild \ -project ./Game/PocketUniverse.xcodeproj \ -target ***Tests \ -configuration Debug -sdk iphonesimulator \ | ./ocunit2junit.rb

https://github.com/MattesGroeger/OCUnit2JUnit

Testing with Kiwi

Validation

$ /usr/bin/rake validate_config

Error: element decl. 'xpLevel', attribute 'type': The QName value 'xpLevelDefinition' does not resolve to a(n) type definition. at Schema.xsd:71.

Finished: FAILURE

Automate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest buildEveryone can see the results of the latest build

www.hockeyapp.net

Over-The-Air Distribution

Live Crash Reports

Analytics

Upload new version

curl \ -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

Jenkins Remote Access API

Automate the build

Build every commit

Make build self-testing

Everyone can see the results of the latest build

Now we have more time ...

Section

Questions?MattesGroegerjobs.wooga.com

top related