Skip to content

fix: do not flush global state twice when dama is not enabled #1819

fix: do not flush global state twice when dama is not enabled

fix: do not flush global state twice when dama is not enabled #1819

Workflow file for this run

name: CI
on:
push:
pull_request:
schedule:
- cron: '0 0 1,16 * *'
jobs:
tests:
name: PHP ${{ matrix.php }}, SF ${{ matrix.symfony }} - ${{ matrix.deps }} ${{ matrix.use-orm == '1' && (matrix.orm-db == 'postgres' && '- ORM (postgres)' || '- ORM (mysql)') || '' }} ${{ matrix.use-odm == '1' && '- ODM' || '' }} ${{ matrix.use-dama == '1' && '- DAMA' || '' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [8.0, 8.1, 8.2]
symfony: [5.4.*, 6.2.*, 6.3.*]
deps: [highest]
use-orm: [1]
use-odm: [1]
use-dama: [1]
orm-db: [postgres]
exclude:
- {use-orm: 0, use-odm: 0} # tested directly in a test case
- {use-orm: 0, use-dama: 1} # cannot happen
# conflicts
- {php: 8.0, symfony: 6.2.*}
- {php: 8.0, symfony: 6.3.*}
include:
- {php: 8.0, symfony: 5.4.*, use-orm: 1, use-odm: 0, use-dama: 0, deps: lowest, orm-db: postgres}
- {php: 8.0, symfony: 5.4.*, use-orm: 1, use-odm: 1, use-dama: 0, deps: lowest, orm-db: postgres}
- {php: 8.0, symfony: 5.4.*, use-orm: 0, use-odm: 1, use-dama: 0, deps: lowest, orm-db: postgres}
- {php: 8.2, symfony: 6.3.*, use-orm: 1, use-odm: 0, use-dama: 0, deps: highest, orm-db: postgres}
- {php: 8.2, symfony: 6.3.*, use-orm: 1, use-odm: 1, use-dama: 0, deps: highest, orm-db: postgres}
- {php: 8.2, symfony: 6.3.*, use-orm: 1, use-odm: 0, use-dama: 1, deps: highest, orm-db: postgres}
- {php: 8.2, symfony: 6.3.*, use-orm: 0, use-odm: 1, use-dama: 0, deps: highest, orm-db: postgres}
- {php: 8.2, symfony: 6.3.*, use-orm: 1, use-odm: 0, use-dama: 1, deps: highest, orm-db: mysql}
- {php: 8.2, symfony: 6.3.*, use-orm: 1, use-odm: 0, use-dama: 0, deps: highest, orm-db: mysql}
services:
mysql:
image: mysql:5.7.42
env:
MYSQL_ROOT_PASSWORD: 1234
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
postgres:
image: postgres:15
env:
POSTGRES_USER: postgres
POSTGRES_DB: zenstruck_foundry_${{ matrix.use-dama }}_${{ matrix.orm-db }}
POSTGRES_PASSWORD: 1234
options: --health-cmd pg_isready --health-interval=10s --health-timeout=5s --health-retries=5
ports:
- 5432:5432
mongo:
image: mongo:4
ports:
- 27017:27017
env:
MYSQL_URL: mysql://root:1234@127.0.0.1:3306/zenstruck_foundry?serverVersion=5.7.42
PGSQL_URL: postgresql://postgres:1234@127.0.0.1:5432/zenstruck_foundry_${{ matrix.use-dama }}_${{ matrix.orm-db }}?charset=utf8&serverVersion=15
MONGO_URL: mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Verify MySQL version
run: mysql --host 127.0.0.1 -uroot -p1234 -e "STATUS"
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: pgsql, sqlite, mongodb
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: 'Test'
run: |
if [ "${{ matrix.use-dama }}" == "1" ]; then
CONFIGURATION="--configuration phpunit-dama-doctrine.xml.dist"
fi
vendor/bin/simple-phpunit ${CONFIGURATION}
env:
USE_ORM: ${{ matrix.use-orm }}
USE_ODM: ${{ matrix.use-odm }}
USE_FOUNDRY_BUNDLE: 1
DATABASE_URL: ${{ matrix.orm-db == 'postgres' && env.PGSQL_URL || env.MYSQL_URL }}
code-coverage:
name: Code Coverage
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: 1234
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
mongo:
image: mongo:4
ports:
- 27017:27017
env:
DATABASE_URL: mysql://root:1234@127.0.0.1:3306/zenstruck_foundry?serverVersion=5.7
MONGO_URL: mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Verify MySQL version
run: mysql --host 127.0.0.1 -uroot -p1234 -e "STATUS"
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
extensions: pgsql, sqlite
coverage: xdebug
ini-values: xdebug.mode=coverage
- name: Install dependencies
uses: ramsey/composer-install@v2
with:
composer-options: --prefer-dist
dependency-versions: "highest"
- name: 'Coverage'
run: vendor/bin/simple-phpunit -v --configuration phpunit-dama-doctrine.xml.dist --coverage-text --coverage-clover=foundry.clover
env:
USE_ORM: 1
USE_ODM: 1
USE_FOUNDRY_BUNDLE: 1
- name: Publish coverage report to Codecov
uses: codecov/codecov-action@v3
with:
file: ./*.clover
composer-validate:
uses: zenstruck/.github/.github/workflows/php-composer-validate.yml@main
build-docs:
name: Build Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
coverage: none
- name: Install dependencies
uses: ramsey/composer-install@v2
with:
composer-options: --prefer-dist
- name: Build docs
run: bin/build-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.0
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
test-docker-stack:
name: CI with docker stack
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.0', '8.1', '8.2']
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run test suite with docker
run: |
echo "PHP_VERSION=${{ matrix.php }}" > .env
make validate
push_docker_images:
name: Push docker images after CI complete on main branch
needs: [tests, composer-validate, build-docs, static-analysis, test-docker-stack]
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/1.x' }}
strategy:
fail-fast: false
matrix:
php: ['8.0', '8.1', '8.2']
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Login to ghcr.io
uses: docker/login-action@v2
with:
registry: ghcr.io/zenstruck
username: token
password: ${{ secrets.PACKAGE_PUSH_TOKEN }}
- name: Build and push images
run: ./docker/build.sh push ${{ matrix.php }}
env:
GITHUB_TOKEN: ${{ secrets.PACKAGE_PUSH_TOKEN }}
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@php-cs-fixer
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@sync-with-template
with:
key: ${{ secrets.GPG_PRIVATE_KEY }}
token: ${{ secrets.COMPOSER_TOKEN }}
phpcsconfig: false