Skip to content

chore: simplify CI matrix #1094

chore: simplify CI matrix

chore: simplify CI matrix #1094

Workflow file for this run

name: CI
on:
push:
pull_request:
schedule:
- cron: '0 0 1,16 * *'
jobs:
tests:
name: P:${{ matrix.php }}, S:${{ matrix.symfony }}, D:${{ matrix.database }}, PU:${{ matrix.phpunit || 9 }}${{ matrix.deps == 'lowest' && ' (lowest)' || '' }}${{ matrix.use-dama == 1 && contains(matrix.database, 'sql') && ' (dama)' || '' }}${{ !contains(matrix.database, 'sql') && '' || matrix.use-migrate == 1 && ' (migrate)' || ' (schema)' }}${{ matrix.use-phpunit-extension == 1 && ' (phpunit extension)' || '' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ 8.1, 8.2, 8.3 ]
symfony: [ 6.4.*, 7.1.* ]
database: [ mysql, mongo ]
# default values:
# deps: [ highest ]
# use-dama: [ 1 ]
# use-migrate: [ 0 ]
# use-phpunit-extension: [ 0 ]
# phpunit: [ 9 ]
exclude:
- php: 8.1
symfony: 7.1.*
include:
- php: 8.3
symfony: '*'
database: none
- php: 8.3
symfony: '*'
database: mysql|mongo
- php: 8.3
symfony: '*'
database: pgsql|mongo
- php: 8.3
symfony: '*'
database: pgsql
use-dama: 0
- php: 8.3
symfony: '*'
database: sqlite
use-dama: 0
- php: 8.3
deps: lowest
symfony: '*'
database: sqlite
use-dama: 0
- php: 8.3
deps: lowest
symfony: '*'
database: mysql
- php: 8.3
symfony: '*'
database: mysql
use-migrate: 1
- php: 8.3
symfony: '*'
database: mysql|mongo
phpunit: 10
- php: 8.3
symfony: '*'
database: mysql|mongo
phpunit: 11
- php: 8.3
symfony: '*'
database: mysql|mongo
use-phpunit-extension: 1
phpunit: 11
env:
DATABASE_URL: ${{ contains(matrix.database, 'mysql') && 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' || contains(matrix.database, 'pgsql') && 'postgresql://root:root@localhost:5432/foundry?serverVersion=15' || contains(matrix.database, 'sqlite') && 'sqlite:///%kernel.project_dir%/var/data.db' || '' }}
MONGO_URL: ${{ contains(matrix.database, 'mongo') && 'mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb' || '' }}
USE_DAMA_DOCTRINE_TEST_BUNDLE: ${{ matrix.use-dama == 1 && contains(matrix.database, 'sql') && 1 || 0 }}
USE_FOUNDRY_PHPUNIT_EXTENSION: ${{ matrix.use-phpunit-extension || 0 }}
PHPUNIT_VERSION: ${{ matrix.phpunit || 9 }}
DATABASE_RESET_MODE: ${{ matrix.use-migrate == 1 && 'migrate' || 'schema' }}
services:
postgres:
image: ${{ contains(matrix.database, 'pgsql') && 'postgres:15' || '' }}
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: foundry
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mongo:
image: ${{ contains(matrix.database, 'mongo') && 'mongo:4' || '' }}
ports:
- 27017:27017
steps:
- name: display matrix values
run: |
echo "USE_FOUNDRY_PHPUNIT_EXTENSION: ${{ env.USE_FOUNDRY_PHPUNIT_EXTENSION }}"
echo "PHPUNIT_VERSION: ${{ env.PHPUNIT_VERSION }}"
echo "DATABASE_RESET_MODE: ${{ env.DATABASE_RESET_MODE }}"
echo "USE_DAMA_DOCTRINE_TEST_BUNDLE: ${{ env.USE_DAMA_DOCTRINE_TEST_BUNDLE }}"
echo "deps: ${{ matrix.deps == 'lowest' && ' (lowest)' || '' }}"
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Setup PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: ${{ matrix.php }}
# coverage: none
# tools: flex
#
# - name: Install dependencies
# uses: ramsey/composer-install@v2
# with:
# dependency-versions: ${{ matrix.deps }}
# composer-options: --prefer-dist
# env:
# SYMFONY_REQUIRE: ${{ matrix.symfony }}
#
# - name: Set up MySQL
# if: contains(matrix.database, 'mysql')
# run: sudo /etc/init.d/mysql start
#
# - name: Test
# run: ./phpunit
# shell: bash
# code-coverage:
# name: Code Coverage
# runs-on: ubuntu-latest
# env:
# DATABASE_URL: postgresql://root:root@localhost:5432/foundry?serverVersion=15
# MONGO_URL: mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb
# USE_DAMA_DOCTRINE_TEST_BUNDLE: 1
# USE_FOUNDRY_PHPUNIT_EXTENSION: 1
# PHPUNIT_VERSION: 11
# services:
# mongo:
# image: mongo:4
# ports:
# - 27017:27017
# postgres:
# image: postgres:15
# env:
# POSTGRES_USER: root
# POSTGRES_PASSWORD: root
# POSTGRES_DB: foundry
# ports:
# - 5432:5432
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Setup PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: 8.2
# coverage: xdebug
# ini-values: xdebug.mode=coverage
#
# - name: Install dependencies
# uses: ramsey/composer-install@v2
# with:
# composer-options: --prefer-dist
#
# - name: Test with coverage
# run: ./phpunit --coverage-text --coverage-clover coverage.xml
# shell: bash
# env:
# SYMFONY_DEPRECATIONS_HELPER: disabled
#
# - name: Publish coverage report to Codecov
# uses: codecov/codecov-action@v3
# with:
# file: ./coverage.xml
#
# composer-validate:
# uses: zenstruck/.github/.github/workflows/php-composer-validate.yml@main
#
# lint-docs:
# name: Lint Documentation
# runs-on: ubuntu-latest
# steps:
# - name: "Checkout code"
# uses: actions/checkout@v3
#
# - name: DOCtor-RST
# uses: docker://oskarstark/doctor-rst
# with:
# args: --short --error-format=github
# env:
# DOCS_DIR: 'docs/'
#
# static-analysis:
# name: Static Analysis
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Setup PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: 8.3
# coverage: none
#
# - name: Install dependencies
# uses: ramsey/composer-install@v2
# with:
# composer-options: --prefer-dist
#
# - name: Install PHPStan
# run: composer bin phpstan install
#
# - name: Run static analysis
# run: bin/tools/phpstan/vendor/phpstan/phpstan/phpstan analyse
#
# - name: Install Psalm
# run: composer bin psalm install
#
# - name: Run Psalm on factories generated with maker
# run: bin/tools/psalm/vendor/vimeo/psalm/psalm
#
# fixcs:
# name: Run php-cs-fixer
# needs: sync-with-template
# if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck'
# runs-on: ubuntu-latest
# steps:
# - uses: zenstruck/.github/actions/php-cs-fixer@main
# with:
# php: 8
# key: ${{ secrets.GPG_PRIVATE_KEY }}
# token: ${{ secrets.COMPOSER_TOKEN }}
#
# sync-with-template:
# name: Sync meta files
# if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck'
# runs-on: ubuntu-latest
# steps:
# - uses: zenstruck/.github/actions/sync-with-template@main
# with:
# key: ${{ secrets.GPG_PRIVATE_KEY }}
# token: ${{ secrets.COMPOSER_TOKEN }}