Continuous integration/Workflow 2013
This page is obsolete. It is being retained for archival purposes. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date.
Draft from 2012
This page describes the typical job configuration for MediaWiki-related repositories, as drafted in 2012 and 2013.
It's important to understand what the tools we have are used for and in which order we assess and process their results.
- Linting (php-lint, jshint, ..)
Static analysis for common mistakes, syntax errors, code quality etc. For example references to APIs not available in old IE, trailing commas that crash IE etc, loose comparison that can lead to side effects etc.
*.js: JSHint (with these settings).
php -l(should use lint.php instead for performance), we also run PHP CodeSniffer on some projects.
*.css: (TODO) I'm not sure if there is a good CSS linter out there, but we should have something for it. It would also have to support a way to allow used IE-hack workarounds that use invalid CSS.
- Server-side unit testing (PHPUnit)
Assert server-side modules works as expected on the unit level.
- Client-side unit testing (QUnit)
Assert client-side modules works as expected on the unit level.
- ... webkit
- ... browser matrix (TODO)
This will distribute the QUnit tests to the browser matrix (through TestSwarm and BrowserStack, or with Grunt and Saucelabs).
- ... webkit
- Integration tests (Selenium) (TODO)
Asserts high-level integration between different components and features that rely on OS interaction (creating an account and logging in, uploading files, drag and drop, editing/saving/reverting/recentchanges etc.). Our browser tests run regularly at https://wmf.ci.cloudbees.com/
- These are run automatically from Jenkins before merging, deployed code passes this.
- This is being worked on and will be automatically from Jenkins before merging soon.
This example is for mediawiki/core.git, configured zuul-config/layout.yaml
Whenever a change is pushed for review, or approved (and needs to be merged), Zuul initiates the "test" pipeline (or "gate-and-submit" pipeline, which is the same for most projects):
- Zuul gets notified and starts the pipeline for project "mediawiki/core"
- Build steps:
- jenkins-bot leaves review on Gerrit.