A matrix of PHP versions against WordPress versions produces a grid, and two cells of it are combinations that were never supported.
strategy:
fail-fast: false
matrix:
php: ['7.4', '8.0']
wordpress: ['5.6', '5.7', '5.8']
exclude:
- php: '8.0'
wordpress: '5.6' # no 8.0 support until 5.6.1
include:
- php: '8.0'
wordpress: 'trunk'
experimental: true
fail-fast: false is the setting that makes a matrix useful rather than infuriating: the default cancels every other job on the first failure, so a single broken combination hides the other five results. include adds a combination outside the grid and can also add a property to existing cells, which is a genuinely confusing dual behaviour — it modifies a cell if the keys match an existing one and appends a new job if they do not.