Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func...
Transcript of Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func...
![Page 1: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/1.jpg)
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
#WWDC14
Continuous Integration with Xcode 6
Session 415 Brent Shank Software Engineer, Xcode
Tools
![Page 2: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/2.jpg)
Introduction
Why continuous integration?
What is Xcode Server?
What’s new in Xcode Server?
Demos
![Page 3: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/3.jpg)
Why Continuous Integration?
Enhances collaboration
Improves software quality
Catches problems quickly and automatically
Broadens test coverage
Gathers build and test history for your project
Easily distributes builds to your team
![Page 4: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/4.jpg)
Terminology
![Page 5: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/5.jpg)
SchemeRecipe for building
your project
Terminology
![Page 6: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/6.jpg)
SchemeRecipe for building
your project
SHARED
Terminology
![Page 7: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/7.jpg)
SchemeRecipe for building
your project
SHARED
BotAnalyze, build,
test, and archive on a schedule
Terminology
![Page 8: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/8.jpg)
IntegrationA single run
of a bot
SchemeRecipe for building
your project
SHARED
BotAnalyze, build,
test, and archive on a schedule
Terminology
![Page 9: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/9.jpg)
Terminology
![Page 10: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/10.jpg)
Terminology
![Page 11: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/11.jpg)
What Is a Bot?
Defines what to build • Project and SCM information
When to build it • Periodic, on-commit, or manual
How to build it • Shared scheme
• Static analysis
• Testing and devices
• Archives
Notifications
![Page 12: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/12.jpg)
Xcode Server Features
Easy setup with Xcode and OS X Server
Integrates with the Apple Developer program
Builds iOS and Mac projects
Runs tests on multiple devices and simulators
Produces IPA and PKG files
Seamless Xcode integration
Beautiful UI
![Page 13: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/13.jpg)
OS X Server
Application that hosts Xcode Server
Simple setup
Hosted repositories
Devices • Add and remove devices from your team
• Run tests on multiple iOS devices
• Automatic device provisioning for testing
![Page 14: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/14.jpg)
Xcode Server for Xcode 6What’s new
A shiny new foundation
Support for Swift
Performance testing
Issue tracking
Support for pre- and post-integration triggers
![Page 15: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/15.jpg)
Xcode ServerImprovements and performance
New foundation
Huge performance improvements
Super reliable
Great scalability
![Page 16: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/16.jpg)
Xcode ServerImprovements and performance
New foundation
Huge performance improvements
Super reliable
Great scalability
![Page 17: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/17.jpg)
Xcode ServerTriggers
Support for pre- and post-integration triggers
Trigger conditions
Shell script or email
Customized email reports
Environment variables • Bot ID
• Bot Name
• Integration Number
• Integration Result
• And more!
![Page 18: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/18.jpg)
Xcode ServerIssue tracking
Detects new issues (build errors, warnings, static analysis, test failures)
Attributes issues to committers
Tracks unresolved issues
Identifies resolved issues
Assistant editor integration
Surfaced in email notifications
![Page 19: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/19.jpg)
DemoServer setup, bot configuration, triggers
Matt Patenaude (a.k.a. Short Matt)
![Page 20: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/20.jpg)
Xcode ServerSwift support
Builds Swift projects
Builds mixed Swift/Objective-C projects
Complete testing support
Performance testing
Assistant editor for issues
Complete feature parity with Objective-C projects
![Page 21: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/21.jpg)
Xcode ServerPerformance testing
Runs performance tests on multiple devices
Supports iOS devices and Mac
Leverages baselines that you configure in Xcode
![Page 22: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/22.jpg)
Xcode ServerPerformance testing—Baselines
![Page 23: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/23.jpg)
Xcode ServerPerformance testing—Objective-C
- (void)testPerformanceExample { // This is an example of a performance test case. [self measureBlock:^{ // Put the code you want to measure the time of here. }]; }
![Page 24: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/24.jpg)
Xcode ServerPerformance testing—Swift
func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock() { // Put the code you want to measure the time of here. } }
![Page 25: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/25.jpg)
DemoSwift support, performance testing
Matt Moriarity (a.k.a. Tall Matt)
![Page 26: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/26.jpg)
Summary
New foundation
Tons of bug fixes and under the cover improvements
Triggers
Issue tracking
Swift support
Performance testing
![Page 27: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/27.jpg)
Summary
![Page 28: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/28.jpg)
Summary
![Page 29: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/29.jpg)
Summary
![Page 30: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/30.jpg)
Summary
![Page 31: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/31.jpg)
Summary
![Page 32: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/32.jpg)
More Information
Dave DeLong Developer Tools Evangelist [email protected]
!
Documentation Xcode Continuous Integration Guide http://developer.apple.com
Apple Developer Forums http://devforums.apple.com
![Page 33: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/33.jpg)
Related Sessions
• Testing in Xcode 6 Marina Thursday 9:00AM
![Page 34: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/34.jpg)
Labs
• Continuous Integration Tools Lab C Thursday 2:00PM
![Page 35: Continuous Integration with Xcode 6 · Xcode Server Performance testing—Swift func testPerformanceExample() { // This is an example of a performance test case. self.measureBlock()](https://reader034.fdocuments.in/reader034/viewer/2022042805/5f681027f50bd9126c71934b/html5/thumbnails/35.jpg)