Continuous Integration for IOS Apps

25
Continuous Integration for iOS Apps Wednesday, October 16, 13

description

Developing IOS Applications in a team environment requires integration and continuous builds. This presentation shows how to develop this with your team.

Transcript of Continuous Integration for IOS Apps

Continuous Integration for iOS Apps

Wednesday, October 16, 13

Agenda• Overview

• Setting up Ruby for an application

• Setup up Cocoapods

• Raking the setup, build and testing tasks

• Setting up the Jenkins jobs

• Sit Back and let it build

Wednesday, October 16, 13

What is Continuous Integration

• Process in which code is constantly compiled with tests run against the app

Wednesday, October 16, 13

Adding Ruby to your Application

• Mac has ruby installed by default

• Add a couple of gems:

• $ sudo gem install rake

$ sudo gem install bundler

Wednesday, October 16, 13

Bundle Init

# A sample Gemfilesource "https://rubygems.org"

# gem "rails"

gem "cocoapods", "~> 0.25.0"gem "frank-cucumber", "~> 1.2.0"

Wednesday, October 16, 13

CocoaPods Init# Uncomment this line to define a global platform for your project# platform :ios, "6.0"

pod 'AFNetworking', '~> 1.3.2'pod 'TestFlightSDK', '~> 2.0'pod 'Reachability', '~> 3.1.1'pod 'Pixate', '~> 2.0.0RC2'

target :test do! link_with "WorkoutPokerTests"! #pod 'Kiwi', '~> 2.2.1'! pod 'OCMock', '~> 2.2.1'end

Wednesday, October 16, 13

Workspace scheme export

Wednesday, October 16, 13

Rake Setup

task :setup do system 'bundle install' system 'pod install'end

Wednesday, October 16, 13

Rake Build

task :build do system 'xcodebuild -workspace WorkoutPoker.xcworkspace -scheme WorkoutPoker build'end

Wednesday, October 16, 13

Rake Test

task :test do system 'xcodebuild -workspace WorkoutPoker.xcworkspace -scheme WorkoutPoker -sdk iphonesimulator7.0 build test'end

Wednesday, October 16, 13

Rake frank

task :frank do' result = system 'frank build --workspace WorkoutPoker.xcworkspace --scheme WorkoutPoker' if result #system 'frank launch' Dir.chdir('Frank') do system 'cucumber' end endend

Wednesday, October 16, 13

Get Started with Jenkins

• Download Jenkins

• Run java -jar jenkins.war

• Open browser and go to localhost:8080

Wednesday, October 16, 13

Jenkins Plugins• Jenkins GIT Plugin

• Keychains and Provisioning Profiles Management

• Testflight Plugin

• Xcode plugin

• Rake Plugin

Wednesday, October 16, 13

Building a Job

Wednesday, October 16, 13

Setting up SCM

Wednesday, October 16, 13

Setting Up Triggers

Wednesday, October 16, 13

Setting up Build Environment

Wednesday, October 16, 13

XCode build plugin 1

Wednesday, October 16, 13

XCode Build Plugin 2

Wednesday, October 16, 13

Shell Build

Wednesday, October 16, 13

Kick off Another Project

Wednesday, October 16, 13

Push Git Tag

Wednesday, October 16, 13

Upload to TestFlight

Wednesday, October 16, 13

Resources

• www.cocoapods.org

• www.jenkins-ci.org

• www.testflightapp.com

Wednesday, October 16, 13

About Me

• Twitter: @cajun_code

• email: [email protected]

Wednesday, October 16, 13