====== MantisBT Build Process proposal ====== This page is only a draft, pending discussion on the development mailing list. ===== Scope ===== This document proposes a number of improvements to the MantisBT build process, by introducing a structured build process used to validate code changes as they happen and to produce nightly builds. Goals: * Increased visibility of the build results and of their consumability * Increased feedback speed regarding corectness of changes * Larger testing coverage of the MantisBT codebase Non-goals: * Continuous deployment of the resulting artifacts * Generating release artifacts , replacing the current release process ===== Build process ===== The current MantisBT testing infrastructure supports two kinds of tests: * Self-contained unit tests * Integration tests for the SOAP API These tests could be arranged in the following succession - Unit tests - Integration tests SOAP matrix build - Integration tests running against MySQL Community 5.1.x - Integration tests running PostgreSQL 9.0.x ==== Database backend extensibility ==== This build will allows us to easily scale in the medium term by adding more databases from those in our supported or experimental phase: - DB2 Express 9.7.x - Oracle XE 10g - SQL Server Express ( problematic, probably requires Windows license ) ==== Adding new kinds of integration tests ==== As we progress, we will be able to new kinds of matrix builds, for instance: - file API builds against multiple backends ( database, file, ftp ) - authentication API builds against different authentication schems ( Mantis internal, LDAP ) Another possibility is to add Selenium-driven tests to our build, to validate that the pages work as expected . ===== Publishing results ===== The results will be published as checksummed archives, which have a validated quality - they pass ( or not ) the tests as currently defined. This is key information for both developers and early consumers of the build and encourages rapid feedback on versions still in development.