Continuous Integration is a common concern of all developers.
Most of projects use some tool, like Travis (available on github.com). PHP have its own tests suite. This allow to check that each modification of the source code doesn't introduce any regression.
This seems enough for a project, but for the whole PHP stack, we need to:
- check that any dependency update doesn't break other projects using it
- check that a PHP update doesn't introduce any regression in other projects, as soon as a Release Candidate is released (PHP versions available in travis/github are often a bit outdated)
- check that packaging related change doesn't break anything
The Koschei project is an answer to those needs, by supervising updates in rawhide (development branch of Fedora) and launching scratch build of all dependent packages.
As a lot of tools, libraries and framework are available in Fedora repository, they have been added so they are now monitored, especially:
- PHP (only version 5.6 for now)
- PHPUnit and its dependencies
- Symfony
- Doctrine
- Horde
- etc
Instance URL : http://koschei.cloud.fedoraproject.org/
This new tool should have allowed us to detect sooner recent regressions introduced in PHP version 5.4.29 and 5.5.13. So I plan to import next Release Candidate as soon as possible, so we can take benefit of this supervision.
For example, we just detect a new FTBFS in symfony test suite after the update of PHPUnit 4.2.0 (it was a packaging issue, and is already fixed).
Of course, it means we need to have a test suite for each project, and to run it during the package build, but this is, for a long time, part of the good practices.
We'll see how this tool behave, but I think it really brings an important improvement for continuous integration of the whole PHP stack.
This is also, and mostly, a tool for which results should give benefits to each project, proving the usefulness of projects collaboration (upstream / downstream), and giving even more interest, for each project, to be available in a downstream distribution, such as Fedora.