Skip to content

ci: Expand the MediaWiki version matrix to REL1_43..master (#222) #684

ci: Expand the MediaWiki version matrix to REL1_43..master (#222)

ci: Expand the MediaWiki version matrix to REL1_43..master (#222) #684

name: Quibble and Phan
on:
push:
branches: [main]
pull_request:
jobs:
test:
strategy:
fail-fast: false
matrix:
mediawiki-version:
- REL1_43
- REL1_44
- REL1_45
- REL1_46
- master
stage:
- phan
- coverage
- phpunit-unit
- phpunit
- phpunit-standalone
- npm-test
- composer-test
- selenium
# - qunit
# - api-testing
exclude:
# composer-test (parallel-lint, phpcs, minus-x) is MediaWiki-version
# independent, so run it on a single version (REL1_43). This avoids the
# same phpcs annotations being emitted once per version and saves CI time.
- mediawiki-version: REL1_44
stage: composer-test
- mediawiki-version: REL1_45
stage: composer-test
- mediawiki-version: REL1_46
stage: composer-test
- mediawiki-version: master
stage: composer-test
# coverage tooling (generatePHPUnitConfig.php) lives only on master, so
# the action skips it on other branches; don't spin up a no-op job.
- mediawiki-version: REL1_43
stage: coverage
- mediawiki-version: REL1_44
stage: coverage
- mediawiki-version: REL1_45
stage: coverage
- mediawiki-version: REL1_46
stage: coverage
runs-on: ubuntu-latest
# contents: read to clone; id-token: write so the Codecov upload can
# authenticate via OIDC instead of an upload token.
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v7
- uses: femiwiki/quibble-action@6cdce5833f7d82f9e003b0077c8bc5a7572343cf # main
id: quibble
with:
stage: ${{ matrix.stage }}
mediawiki-version: ${{ matrix.mediawiki-version }}
# Wikibase is dropped from the selenium stage only. Quibble's selenium
# stage runs `npm run selenium-test` for every dependency that has it,
# and on REL1_43 Wikibase's wdio config globs in the wikibase-termbox
# specs, which need MinervaNeue + MobileFrontend to render their mobile
# UI and otherwise time out. Wikimedia's own downstream-extension jobs
# likewise do not run Wikibase's selenium. Wikibase stays for the other
# stages (phan/phpunit need it).
dependencies: ${{ matrix.stage == 'selenium' && 'CategoryTree SpamBlacklist' || 'CategoryTree SpamBlacklist Wikibase' }}
- name: Upload coverage to Codecov
if: matrix.stage == 'coverage'
uses: codecov/codecov-action@v7
with:
use_oidc: true
directory: ${{ steps.quibble.outputs.coverage }}