The EMI Build and Test Services task has been a key activity to reach the major goal of releasing a single consistent set of packages with uniform distributions and repositories within the EMI project. Achieve this goal has required a wide effort of integration, coordination and standardization. The EMI Quality Assurance activity has been the responsible for providing, maintaining and improving all the build and test services needed for building, packaging, testing and obtain quality control information about the EMI software packages and the EMI development process.
As final results, the software developed in EMI is available in more platforms and the packages delivered are compliant with the guidelines of the main Linux distributions (Fedora/EPEL and Debian). The different teams were using a heterogeneous set of build and test services, policies and quality criteria at the beginning of the project. Integrating more than thirty software products and moving them to use identical platforms and a central build and test service was a very challenging task with an important positive impact in the final project result.
The work developed in the EMI build and test services activity to achieve that goal during all the project life has been split into different phases. The first year was oriented to the integration of the different build and test tools and procedures used to build the middlewares under one common set of EMI build and test services and policies. Once all the product teams were unified to use the same tools, procedures and quality criteria; they were improved to facilitate the new capabilities required by the project during the second year. The system was improved to support new platforms. The initial software lifecycle was modified to adapt the system to the new policies. Standard build tools, such as Mock and PBuilder, have been integrated to generate packages compliant with the Fedora and Debian guidelines. The third year of the EMI project, with most of the functionality already in place, is dedicated to consolidate the work done and to improve the reliability and performance of the build and test services.
The quality of the products generated and the processes associated to them have been also monitored across all this time. New build and test services have been developed and integrated to collect and provide to the EMI Release Manager and the Quality Control team the information required.
Those three phases involved a mixture of standardization of different procedures and ways of software development for complex pieces of software with the introduction of new standard build and test services and policies. During the entire process many challenging situations have been encountered and confronted with, which are reflected in the lessons learned that will be explained. These lessons include reasons for using standard tools or in-house services, challenges of supporting new platforms, how to monitor the necessary build and test infrastructure and how to maintain and measure the level of quality and integration of the EMI components once the project has ended.