Continuous Integration is a development method in which developers commit their work in a version control system (such as CVS or Subversion) very frequently (typically several times per day) and the project is automatically rebuilt. One of the advantages of this technique is that merge problems are detected and corrected early.
The build process not only generates the binaries, it also runs automated tests, generates documentation, checks the code coverage of tests and analyzes code style...
The whole process can take several hours for large projects. Therefore, the efficiency of this development method relies on the speed of the feedback. There is a real need to speed up the build process, and thus to distribute it. This is one of the goal continuous integration server xooctory (http://xooctory.xoocode.org/ ) initiated by Xavier Hanin (Jayasoft (http://www.jayasoft.fr/index.php )).
In order to obtain an efficient distribution of the build, the build process can be decomposed into nearly independent sub processes, executed on different nodes. Nevertheless, to be completed, a sub process must be run on a node that holds the appropriate version of the tools (compiler, code auditing software, ...), the appropriate version of the libraries, and the appropriate version of source code. Of course, if the target node does not have all these items, it can download them from another node, but these communications may be more expensive than the execution of the sub processes.
This raises several challenging problems:
Build a distributed data structure that can efficiently provide
Design distribution strategies of the build that take advantage of the processing and communication capabilities of the nodes.
We are collaborating with Xavier Hanin and Jayasoft in order to solve distribution problems in the context of distributed continuous integration. Our goal is to incorporate some of the services developed in Cepage to obtain a large scale distributed version of the continuous integration server xooctory.
Ludovic Courtes (delegated to CEPAGE as INRIA SED Engineer) is currently working on a distributed version of the integration server Xooctory. We expect to distribute this new version at the end of 2010.