Continuous integration

From MediaWiki.org
Jump to: navigation, search

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 execution of unit tests and TestSwarm for distribution and execution QUnit (JavaScript) unit tests.

All tool are reachable from the homepage:

integration.wikimedia.org

Also have a look at our tutorials.

Status[edit | edit source]

  • 2013-11-04:
    Antoine installed in labs Zuul version that uses gearman to trigger jobs and did all the puppet works for it. Will have to test it more thoroughly and schedule an upgrade of the production setup.

Rationale[edit | edit source]

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[edit | edit source]

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.

Documents[edit | edit source]

Sub-pages of Continuous Integration:

Browser tests Documentation generation Git repositories
Jenkins Jenkins job builder Legacy server
Overhaul PHP CodeSniffer PHP CodeSniffer/initial run
Running locally
Tutorials Tutorials/Adding a MediaWiki extension Tutorials/Adding basic checks
Workflow Workflow v1 specification
Workflow v2 specification Zuul grunt
status


See also[edit | edit source]