fix: do not flush global state twice when dama is not enabled #1819
Workflow file for this run
This file contains 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: 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 |