Optimize CI workflow performance and reliability #2018
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Testing | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| pull_request: | |
| schedule: | |
| - cron: '0 0 * * *' # Run every day at midnight. | |
| # Each run fans out to 155 jobs, so overlapping runs are expensive. | |
| # Keying on the ref lets a new push supersede the run it replaces, for pull | |
| # requests and branches alike. Keying on the event as well keeps a push to the | |
| # default branch and the nightly schedule from cancelling each other, since both | |
| # report the same ref. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| functional: | |
| name: ${{ matrix.test-package }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php: ['7.4', '8.5'] | |
| wp: ['latest', 'trunk'] | |
| dbtype: ['mysql', 'sqlite'] | |
| object_cache: ['none', 'sqlite'] | |
| use-phar: [false, true] | |
| test-package: | |
| - wp-cli-bundle | |
| - wp-cli | |
| - ability-command | |
| - ai-command | |
| - block-command | |
| - cache-command | |
| - checksum-command | |
| - config-command | |
| - core-command | |
| - cron-command | |
| - db-command | |
| - embed-command | |
| - entity-command | |
| - eval-command | |
| - export-command | |
| - extension-command | |
| - i18n-command | |
| - import-command | |
| - language-command | |
| - maintenance-mode-command | |
| - media-command | |
| - package-command | |
| - rewrite-command | |
| - role-command | |
| - scaffold-command | |
| - search-replace-command | |
| - server-command | |
| - shell-command | |
| - site-health-command | |
| - super-admin-command | |
| - widget-command | |
| exclude: | |
| # Object cache runs only on sqlite dbtype | |
| - dbtype: mysql | |
| object_cache: sqlite | |
| # SQLite runs only on WP latest and PHP 8.5 | |
| - dbtype: sqlite | |
| wp: trunk | |
| - dbtype: sqlite | |
| php: '7.4' | |
| # Object cache runs only with WP latest | |
| - object_cache: sqlite | |
| wp: trunk | |
| # A1: object_cache=sqlite only on PHP 8.5 | |
| - php: '7.4' | |
| object_cache: sqlite | |
| # Phar usage match defaults | |
| - use-phar: true | |
| wp: trunk | |
| - use-phar: false | |
| wp: latest | |
| # Limit ancient php on trunk | |
| - php: '7.4' | |
| wp: trunk | |
| uses: ./.github/workflows/reusable-testing.yml | |
| with: | |
| test-package: ${{ matrix.test-package }} | |
| php: ${{ matrix.php }} | |
| wp: ${{ matrix.wp }} | |
| dbtype: ${{ matrix.dbtype }} | |
| object_cache: ${{ matrix.object_cache }} | |
| use-phar: ${{ matrix.use-phar }} | |