background preloader

Continuous Integration

Facebook Twitter

Ups and Downs with Continuous Integration for iOS Apps (Jenkins, Xcode, Cobertura and Testflight) For the last few years I´ve programmed mostly in Java. And, in this world it´s common to have a Continuous Integration (CI) server for building your product nightly or more often. When we started developing RAP mobile with its large amount of Objective-C code within an Xcode project, we didn´t have a CI server for the iOS client. But this has changed recently. We now have a full CI system for our iOS products including automated test execution, code coverage and publishing to Testflight. In this post I´d like to show you how we created this system as it may be helpful for you when you´re building your own app.

First I´d like to mention some resources that helped me a lot. Setting up a Jenkins slave Here at EclipseSource we use Jenkins for our build jobs. After configuring the master it was time to start the Jenkins slave. . Launchctl submit -l jenkins-slave -- sh /Users/build/scripts/startSlave.sh Of course you don´t need the startSlave.sh script. Creating a build job. Continuous Integration Cruise Control and Force Com. Abstract Continuous integration refers to the practice of frequently integrating and testing code, rather than waiting until the end of a project or development cycle.

Continuous Integration Cruise Control and Force Com

The practice of continuous integration is a well established best practice that has been used with software development across multiple platforms and languages. Implementing an automated continuous integration system usually involves a source code repository, used to store the code during team development, and a continuous integration tool that polls the repository for changes and automatically builds and deploys the code in a sandbox.

This article shows you how to start using continuous integration on Force.com using the popular CruiseControl tool. Introducing Continuous Integration Consider a typical development cycle scenario at a fictitious company called Acme. Before a release they integrate their code in a sandbox environment, perform their testing and finally promote it to a production. Pretty neat - huh? Summary. Launching Cruise Control during Startup on OSX. I spent a good amount of time today trying to figure out how to turn my “old” iMac into a development environment, which included installing Cruise Control.

Launching Cruise Control during Startup on OSX

Since I didn’t want to run the launch script manually, I tried (and failed) to find someone who’s successfully gotten cruise to autostart on boot. A bit of investigation later and I came up with a solution, drawn from an excellent blog post on adding your own osx boot launch scripts, an archive script on launching cruise on unix init, and the tacit information in the MySQLCOM Bootstrapper contained in the OSX Binary Distribution.

Step 1: Download and Install Cruise Control You can download Cruise Control from Sourceforge. For the purpose of this demo I’ve used the binary distribution, though you can compile your own. Step 2: Create a User It’s best practice to not run cruise as root, so open up your user accounts and create a new user called Cruise Control. Step 3: Create a folder in the StartupItems directory. <? #! That’s it. Getting Started With CruiseControl - CruiseControl. We're intentionally avoiding providing an initial, fill-in-the-blanks template, but instead will add features one by one, hopefully to instill a better understanding of how everything works.

Getting Started With CruiseControl - CruiseControl

You might find CruiseControlInstalled useful as well (if a little out of date). This guide assumes that you've already got a working project, with an Ant build file and a CVS module for source control. Your ant buildfile should have a single target, say "full-build", which performs all of the build steps for your project, including compiling, building jars, running tests, and generating the full software distribution. This guide also assumes that there is a single output file from the build, eg a Zip file containing all of your jars, docs etc. Once you've got the simple things working, you'll be able to customize your build exactly how you like it. Note that we're setting up CC to take advantage of the new multi-project support in v2.1. 0) Download and Set up Java and Ant.