Continuous integration
| Group: | Platform |
| Start: | |
| End: | |
| Management: | Antoine Musso |
| Team: | Chad Horohoe, Timo Tijhof |
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:
Note: CruiseControl and phpUnderControl have been abandoned in favor of Jenkins.
Contents |
[edit] Status
-
[edit status] • [add new]2012-04-25: Jenkins has been upgraded, providing a nicer GUI and the jobs rewrite deployed.
Progress was made on implementing a universal linter for all gerrit changes (so far it lints all (modified) PHP files as part of the Jenkins job for each mediawiki/core changeset in gerrit).
The TestSwarm connection with Jenkins has been established - TestSwarm is now running MediaWiki's QUnit test suite again. The TestSwarm installation became idle after the migration to Gerrit+Git because it was configured for SVN. The old configuration is now disabled, and everything is now handled by Jenkins instead.
Christian Aistleitner created a test suite for the (rewritten) MWDumper system and are also monitored live on Jenkins.
[edit] 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.
[edit] Timeline
See also Task management for what else is on the schedule
- 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.
2012:
- 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.
[edit] Documents
- Software repositories:
- Specifications:
- Schedule:
- Communications plan: