Nov 30

Continuous Integration is a software engineering process to speed-up the delivery and reduces the integration times. Basic mantras of continuous Integration are “Test Early” and improve the quality.

Continuous Integration means that we capture entire process, every step that turns our source code into software:

  • Build our code on every commit, on a schedule or on demand, with sophisticated build management.
  • Deploy the code to any enviornment, including development, test and staging with deployment scripts or automation.
  • Test daily build by automating the unit test cases.
  • Release with confidence along with the visibility and control.


CIM Best Practices

  1. Maintain a single source repository.
  2. Automate the build.
  3. Make the build self testing.
  4. Commit every day.
  5. Every commit builds on an integration machine.
  6. Keep the build fast
  7. Test in a clone of the production environment.
  8. Make it easy to get the last executable.
  9. Everyone can see what is happening.
  10. Automate deployment.

It is a process of clean rebuilding of project code base to ensure that new changes integrate well into the existing code base and provides feedback on the quality of new changes, so that fixes can be delivered in a timely manner. If the changes do not integrate and break the project code base, we can revert codebase back to stable release. Continuous integration avoids or detects compatibility problems early. If we integrate throughout the project in small amounts, we will not find ourself trying to integrate the system for weeks at the project end.

Advantages & Overhead

  1. Early warning of broken build.
  2. Automatic unit testing of new changes.
  3. When unit test fails, developers can revert the codebace back to stable state.
  4. Constant availability of “Currrent” build.
  5. Frequent code check-in pushes developers to create modular, less complex code.
  6. Quality improvement: Developers get feedback about quality, functioanlity, and impact of code they are writing.
  7. Intgration problems are detected early.

Overhead of adopting this process is to setup and manage continuos integration software on a dedicated server.

Software Available for CIM:

  1. Cruise Control for Java & .NET
  2. Hudson
  3. Apache Continuum
  4. Microsoft Team Foundation Server

A successful integration is a measure of progress. It provides feedback that new code runs correctly in the integration envrionment and successfully interoperates with rest of the code base.

In TarKia, we use Hudson open source software to implement continuos integration. We are using Hudson to promote our code from SVN to test, beta and production environments.

Screenshot of Hudson control panel

I can only describe my time at the winter institute and in reggio emilia as better than I could have hoped for
preload preload preload