Continuous integration

The continuous integration server is a hardware machine that runs continuous integration builds. The project has been rebuilt from scratch on a dedicated server (gallium) hosted in eqiad (Virginia data center). It hosts Jenkins for job control and TestSwarm for JavaScript crowd testing.

All tool are reachable from the homepage:

http://integration.mediawiki.org/

CruiseControl and phpUnderControl have been abandoned in favor of Jenkins.

Rationale
In order to improve the development process, it was proposed to consolidate a platform to run automated tests systematically at pre-commit or post-commit time.

These tests aim to check that the SVN trunk is in an (almost) constantly deployable state. This project also relates to the will to have more frequent code deployments, as continuous integration will give us more confidence in new code if it already passed the automated tests.

Timeline
See also /Task management/ for what else is on the schedule

2012:
 * End of January 2012: rewrite the way we do jobs in Jenkins. One job to fetch code from SVN/Git, another job to actually run the test.  This will make it so that if the checkout fails, it doesn't cause a whole bunch of false failures on tests.
 * Integrate TestSwarm build results into Jenkins for better overview and notification
 * Run core JS tests directly into Jenkins using Node.js. Would let us quickly catch JS issues.
 * Triage tests and split them in fast and slow groups. The fast group could be used as a pre commit hook.
 * Add up code quality metrics such as PHPUnit mess detector.
 * Have jenkins automatically creates a job on topic branch creation.

Documents

 * Software repositories:
 * https://gerrit.wikimedia.org/r/gitweb?p=integration/jenkins.git
 * https://gerrit.wikimedia.org/r/gitweb?p=integration/testswarm.git
 * Specifications:
 * /Workflow specification/
 * Schedule:
 * /Task management/
 * Communications plan:
 * Status updates

Legacy
Wikimedia continuous integration legacy server