New Continuous Integration and Automated Testing Environment for ROOT

Author: P. Mato Vila, P. Schoppe

ROOT is being developed following the practice of Continuous Integration (CI) and automated testing. ROOT is used by the HEP experiments, many physicists and users outside HEP community on a very wide range of platforms and operating systems that need to be supported, as well as many combinations of optional components.  We demonstrate how the Jenkins CI tool is used to handle multiple build modes on a vast amount of machines. By migrating ROOT's build system to CMake, we can handle a varying number of external packages in different versions in a portable manner. Same build procedures and scripts can be used for building on Linux, Macs and Windows, and at the same time we gain more platform interoperability and improve build time behaviour. We illustrate how CTest with custom built test driver scripts, allows us to provide a simple set of tools in order to add and manage a full range of different kind of tests such as unit, integration and regression tests. Depending on the build type, subsets of tests with varying significance may be selected and executed in parallel. Test results are nicely integrated into the Jenkins tool for the benefit of developers and system integrators.