Continuous Integration (CI) is a software development procedure that requires developers to integrate code into a shared repository several times a day. By integrating regularly, teams are able to detect errors quickly and locate them more easily.

This is a practise that we at NN4M have been hoping to embrace for quite a while. And we’re excited to announce that our CI process is now fully up and running. At a basic level, CI dictates that development should be handled in short, frequent, robust increments that update the main code-base, preferably through an automated process.

Frequent integration is crucial to the success of our work. Without it, problems are exponentially more difficult to find and fix, meaning that projects can easily be delayed or worse. The benefits of frequent integration include significantly less back-tracking to locate errors, allowing us more time to build features and ensure seamless functionality.

So how are we using it?

To start with, CI lends itself to the use of revision control. Using Git as our foundation, we respond to commits (changes made to a branch of code) with an automated build process using the Jenkins open source CI server. This then displays on the handy Build Monitor Plugin to provide visual feedback on the effect of commits on the automated build, increasing visibility and enabling more frequent communication, allowing for instant response and preventing errors from going unnoticed for long periods of time.

With this in place, all commits are checked for build errors immediately, preventing any nasty surprises in a later build. If it passes the test it is permitted to join the main code base, if not, it is marked red along with a simple response indicating what went wrong.

This puts us in a good place to keep our main repository protected from errors and respond to problems quickly. From an analytical point of view, this setup is also beneficial as we can see trends in errors in the code, identify errors that need work and see our CI improvements bear fruit.

As a result of these efforts, we are seeing improvements in the quality and stability of our builds. CI is allowing us to catch issues quickly and nip them in the bud, spend less time debugging and more time adding features, and find out immediately if our code is going to work. The overall outcome is a significant reduction in integration problems, which enables us to deliver our software more rapidly.

The next step is to build on this by improving the level of automated testing in our iPhone, Android and server-side scripting development. Our recent advancements with Xcode, Jenkins and Laravel give us plenty of potential in this area so you can expect to see some promising results from us in the near future.