mediawiki/extensions/Wikibase.git is one of the biggest consumer of CI resources. We kept adding jobs to it and never quite revisited how needed they actually are.
The goal of this task is to reduce the number of jobs triggered
Context
Wikibase is:
- a regular extension
- an application to serve the data (repo)
- a client connector for the wikis consuming Wikidata (client)
We have jobs combination to support:
- php flavors: php55 and hhvm
- database backends: sqlite and mysql
Jobs triggered
For gate-and-submit we end up triggering:
Job name | Description |
---|---|
npm-node-6-jessie | Javascript lint/style and others |
composer-php55-trusty | lint/style |
composer-hhvm-jessie | lint/style |
php55lint | Lint on permanent slave. Composer already run parallel-lint |
mwext-testextension-php55-composer-trusty | PHPUnit |
mwext-testextension-hhvm-composer-jessie | PHPUnit |
mwext-qunit-composer-jessie | QUnit tests with Karma |
mwext-mw-selenium-composer-jessie | Browser tests based on ruby/selenium |
And we have subset jobs that tests the repo and client applications:
Job name | App | DB | PHP |
---|---|---|---|
mwext-Wikibase-repo-tests-sqlite-php55-trusty | Repo | sqlite | php55 |
mwext-Wikibase-repo-tests-sqlite-hhvm-jessie | Repo | sqlite | HHVM |
mwext-Wikibase-client-tests-mysql-php55-trusty | Client | MySQL | php55 |
mwext-Wikibase-client-tests-sqlite-php55-trusty | Client | sqlite | php55 |
mwext-Wikibase-client-tests-mysql-hhvm-jessie | Client | Mysql | HHVM |
mwext-Wikibase-client-tests-sqlite-hhvm-jessie | Client | sqlite | HHVM |
Proposition
Drop the Zend PHP 5.5 jobs entirely
Wikimedia is on HHVM and we don't really release Wikibase for outside world reuse. Would let us drop three jobs:
- repo / sqlite
- client / mysql
- client / sqlite
Drop the client/sqlite combination
Wikimedia solely uses MySQL, my understanding is that the sqlite jobs were kept around since developers tend to use sqlite on their development box. Potentially we could migrate that test coverage to a job that runs after a change has been merged and on failure send an email. Will let us drop:
- client / php55
- client / hhvm
Leaving us with a single job for the client side and a single job for the repo side (which would have to be moved from sqlite to mysql:
Job name | App | DB | PHP |
---|---|---|---|
| |||
mwext-Wikibase-repo-tests-sqlite-hhvm-jessie | Repo | sqlite | HHVM |
| |||
mwext-Wikibase-client-tests-mysql-hhvm-jessie | Client | Mysql | HHVM |
Verify the test overlap with generic extension jobs
The generic jobs:
- mwext-testextension-php55-composer-trusty
- mwext-testextension-hhvm-composer-jessie
And the repo/client jobs:
- mwext-Wikibase-repo-tests-sqlite-hhvm-jessie
- mwext-Wikibase-client-tests-mysql-hhvm-jessie
There are probably a lot of tests being run twice.