The iOS Development Podcast
Episode 30: 029 iPhreaks Show – Continuous Integration Integration for iOS with Kevin Munc
Panel
Kevin Munc (twitter github blog)
Jaim Zuber (twitter Sharp Five Software)
Rod Schmidt (twitter github infiniteNIL)
Charles Max Wood (twitter github Teach Me To Code Rails Ramp Up)
Discussion
00:27 - Custom Integration for iOS
02:58 - Jenkins CI
05:49 - Running Unit Tests from the Command Line
08:10 - Custom Integration (CI)
15:46 - Report Tools
GCover
Cobertura
PlistBuddy
19:19 - Distribution
TestFlight
21:50 - Continuous Deployment
24:47 - Travis CI
25:15 - Cloud Options for Setting up CI
Hosted CI
MacMiniColo
TeamCity
27:22 - UI Automation
29:18 - XCUnit
Specta
Picks
Host Xcode Server in a data center (Rod)
NSScreencast (Rod)
Intro to OCHamcrest (Jaim)
Switch Your Control Key (Jaim)
Gcovr User Guide (Jaim)
Sketch (Kevin)
Pixa (Kevin)
Next Week
Building Hardware for iPhones with Joel Stewart
Transcript
CHUCK: Hey everybody and welcome to Episode 29 of the iPhreaks Show. This week on our panel, we have Jaim Zuber.
JAIM: Hello from Minneapolis!
CHUCK: Rod Schmidt.
ROD: Hello from Salt Lake.
CHUCK: I'm Charles Max Wood from devchat.tv. We’ve got a special guest, and that is Kevin Munc.
KEVIN: Hello from Memphis, Ohio.
CHUCK: So we brought you on today to talk about continuous integration for iOS. Now, if I remember right, didn’t they add some kind of continuous integration thing to xcode?
KEVIN: Yes. There is the bots now with the server, so you can avoid Jenkins if you want to.
CHUCK: [Chuckles]
KEVIN: It’s still got some limitations. And I think going through the pain with Jenkins ends up giving you more flexibility at this point in time, but it’s a really good sign that Apple is putting some effort and attention on quality and continuous integration.
CHUCK: Right. But that's not what you were talking about; you're talking about people using Jenkins?
KEVIN: Yeah, that’s where most of my experience is from. I've been doing continuous integration in other platforms for a long time; CruiseControl back in the day, and Jenkins for iOS stuff.
JAIM: It’s pretty much the standard that people have been doing Jenkins for a while, would like to get into the bots, but they are not quite ready for primetime is what I'm hearing. Have you played enough around the bots to know that they are not quite ready?
KEVIN: Somewhat. And I do sort of run into trouble at different points in time, just trying to know where the configuration options are, especially if I'm trying to back out… I’d like to do some blogging on it, do some speaking on it. So, I'm trying to get more familiar with it because that’s something that is in my wheelhouse here. But yeah, I'm definitely trying to go back and redo some things. And I run in to these issues that I didn’t run into the first time. And then trying to do things like… I usually in my continuous integration setup, there's the basic stuff where you does a build, do the tests, run and pass, and maybe some other stack analysis and reports. I usually try and add other things like have a ping to see if the APIs are healthy or not, and things like that. I haven’t figured out how to time that sort of thing into the new bot stuff. It seems it’s focused on the bare essentials at this point. And so, it’s kind of a lot to expect, I guess.
ROD: Do you have to have a separate machine to use bots?
KEVIN: No, I've been fiddling with it right on my laptop that I can do my normal development on. You need to get the server app from the app store, and I think you get promo code through the dev portal, so you know to buy it. And then I just run it locally. It has a lot of options on it and then at bottom is the xcode stuff.
CHUCK: Nice. So let’s harp back over to Jenkins real quick. So you set up Jenkins on… do you have to run it on a Mac? Like a Mac Mini or something? Or can you run Jenkins on a Linux machine and still do the CI stuff?
KEVIN: No. You have to have a Mac.