Continuous Integration for iOS Developer
-
Upload
sven-guenther -
Category
Education
-
view
1.282 -
download
2
Transcript of Continuous Integration for iOS Developer
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