Requirement: OS X• macminicolo.net• hosted-ci.com t ni ght,• cisimple.com un a to r ac, dul e CI n M• macincloud.com Or sche your ow ep... on u sle e yo• hostmyapple.com whil• macminivault.com• xcloud.me
Prefer Scripts over CI Plugins• More ﬂexibility• More resilient to Apple’s changes• More power to adapt and expand (speciﬁcity)• Less coupling to the speciﬁc CI server type• You can version control the settings easier
Test against multiple SDKs-sdk iphonesimulator5.0-sdk iphonesimulator5.1-sdk iphonesimulator6.0
Other Tools to Know About• xcode-select (manage xcode path) • Overridden by DEVELOPER_DIR• xcrun (ﬁnd and run dev tools)• ibtool (for Interface Builder ﬁles)• /Applications/Xcode.app/Contents/Developer/usr/bin/• Variables in Xcode • “Build Settings Reference”
UIAutomation Alternatives• Frank • Objective C Slim (ocslim)• (iCuke) • AutomationKit• KIF • Sikuli• Calabash • MonkeyTalk (formerly• UISpec FoneMonkey)• Bromine • Plus other commercial tools, such as Telerik Test Studio for iOS
Use TestFlight• testﬂightapp.com• OTA deployment• SDK for more features• Free!!
TestFlight• Web UI• Desktop App• REST API• Jenkins Plugin
TestFlight Alternatives• HockeyApp • http://hockeyapp.net • Also has a Jenkins plugin (forked)• BetaBuilder for iOS • http://www.hanchorllc.com/betabuilder-for-ios/• More players in this space, esp. for enterprises...
TestFlight Conﬁg• API Token and Team Token• Need a signed IPA• They get an email with a link for OTA installation!
Protect Your Tokens• API Token & Team Token• Keep them out of scripts• Instead, deﬁne them in Jenkins (and leverage Jenkins security) • Conﬁgure System • Global properties section • Or use the plugin (same parameters)
Other Goodies• Ensure your site or API is up• Scan your code for TODOs and FIXMEs• Get trend reports for lines of code (SLOCCount w/ sloc2html)• Scan for duplicated blocks of code (CPD, Simian, etc.)• Use agvtool (Apple-Generic Versioning Tool) to increment your build number
Still Missing• Cyclomatic Complexity• Coding convention/Style checker• Code Formatter • Uncrustify, UniversalIndentGUI• UML Generation • via CLI, as opposed to OmniGrafﬂe (AppleScript?)• ER Diagram from Core Data schema