cancel-in-progress: true
jobs:
- lint:
+ unit-tests:
runs-on: ubuntu-latest
- name: "Lint on PHP ${{ matrix.php-versions }}"
strategy:
- fail-fast: false
matrix:
- php-versions: [ '8.1', '8.3' ]
+ include:
+ #always tests higher stable php version with lower db version
+ #enable coverage on higher stable php version with higher postrgesql version
+ #higher stable php version
+ - { php-version: "8.3", db-image: "postgres:11", coverage: none, always: true }
+ - { php-version: "8.3", db-image: "postgres:16", coverage: 'xdebug', always: true }
+ - { php-version: "8.3", db-image: "mysql:5.7", coverage: none, always: true }
+ - { php-version: "8.3", db-image: "mysql:8.1", coverage: none, always: false }
+ - { php-version: "8.3", db-image: "mariadb:10.4", coverage: none, always: true }
+ - { php-version: "8.3", db-image: "mariadb:11.3", coverage: none, always: false }
+ #lower php version
+ - { php-version: "8.1", db-image: "postgres:11", coverage: none, always: false }
+ - { php-version: "8.1", db-image: "postgres:16", coverage: none, always: false }
+ - { php-version: "8.1", db-image: "mysql:5.7", coverage: none, always: false }
+ - { php-version: "8.1", db-image: "mysql:8.1", coverage: none, always: false }
+ - { php-version: "8.1", db-image: "mariadb:10.4", coverage: none, always: false }
+ - { php-version: "8.1", db-image: "mariadb:11.3", coverage: none, always: false }
+ fail-fast: false
+
+ env:
+ skip: ${{ matrix.always == false && (github.event_name == 'pull_request' || github.repository != 'galette/galette' || !(github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags'))) }}
+ DB: ${{ matrix.db-image }}
+
+ services:
+ # Label used to access the service container
+ db:
+ # Docker Hub image
+ image: ${{ matrix.db-image }}
+ # Provide env variables for both mysql and pgsql
+ env:
+ POSTGRES_USER: galette_tests
+ POSTGRES_PASSWORD: g@l3tte
+ POSTGRES_DB: galette_tests
+ MYSQL_USER: galette_tests
+ MYSQL_PASSWORD: g@l3tte
+ MYSQL_ROOT_PASSWORD: g@l3tte
+ MYSQL_DATABASE: galette_tests
+ # Open network ports for both mysql and pgsql
+ ports:
+ - 3306:3306
+ - 5432:5432
+ # Set health checks to wait until postgres has started
+ options: >-
+ --health-cmd="bash -c 'if [[ -n $(command -v pg_isready) ]]; then pg_isready; else if [[ -n $(command -v mysqladmin) ]]; then mysqladmin ping; else mariadb-admin ping; fi fi'"
+ --health-interval=10s
+ --health-timeout=5s
+ --health-retries=10
+
+ name: PHP ${{ matrix.php-version }} ${{ matrix.db-image }} ${{ (matrix.always == false && (github.event_name == 'pull_request' || github.repository != 'galette/galette' || !(github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags')))) && ' (skipped)' || matrix.coverage == 'xdebug' && ' (with coverage)' || ''}}
steps:
- name: PHP
+ if: env.skip != 'true'
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
ini-values: apc.enable_cli=1
- name: "Show versions"
+ if: env.skip != 'true'
run: |
php --version
composer --version
+ echo "node $(node --version)"
+ echo "npm $(npm --version)"
+ docker exec ${{ job.services.db.id }} bash -c "if [[ -n \$(command -v psql) ]]; then psql --version; else if [[ -n \$(command -v mysql) ]]; then mysql --version; else mariadb --version; fi fi"
- name: Checkout
+ if: env.skip != 'true'
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: "Restore dependencies cache"
+ if: env.skip != 'true'
uses: actions/cache@v4
with:
path: |
${{ runner.os }}-galette-${{ matrix.php-version }}-
- name: Install dependencies
- run: |
- cd galette
- composer install --optimize-autoloader --ignore-platform-reqs
+ if: env.skip != 'true'
+ run: bin/install_deps
- - name: CS
+ - name: Init for PostgreSQL (update)
+ env:
+ POSTGRES_HOST: localhost
+ POSTGRES_PORT: 5432
run: |
- galette/vendor/bin/phpcs
+ PGPASSWORD=g@l3tte psql -d galette_tests -a -f tests/pgsql_06.sql -U galette_tests -h localhost
+ if: env.skip != 'true' && startsWith(matrix.db-image, 'postgres')
- - name: Twig CS
+ - name: Init for MariaDB (update)
run: |
- galette/vendor/bin/twigcs galette/templates/default --severity error --display blocking
+ mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
+ mysql -e 'use galette_tests; source tests/mysql_06.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
+ if: env.skip != 'true' && (startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb'))
- - name: Install checker
- working-directory: galette
- run: composer require maglnet/composer-require-checker -W --optimize-autoloader --ignore-platform-reqs
+ - name: Update database tests
+ run: TESTENV=UPDATE galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/GaletteUpdate/
+ if: env.skip != 'true' && matrix.coverage != 'xdebug'
- - name: Check missing symbols
+ - name: Init for PostgreSQL
+ env:
+ POSTGRES_HOST: localhost
+ POSTGRES_PORT: 5432
run: |
- galette/vendor/bin/composer-require-checker check --config-file=.composer-require-checker.config.json galette/composer.json
+ PGPASSWORD=g@l3tte psql -d galette_tests -a -f galette/install/scripts/pgsql.sql -U galette_tests -h localhost
+ if: env.skip != 'true' && startsWith(matrix.db-image, 'postgres')
- - name: PHPStan checks
+ - name: Init for MariaDB
run: |
- galette/vendor/bin/phpstan analyze --ansi --memory-limit=2G --no-interaction --no-progress
+ mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
+ mysql -e 'use galette_tests; source galette/install/scripts/mysql.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
+ if: env.skip != 'true' && (startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb'))
- - name: Headers checks
+ - name: Unit tests
+ run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/Galette/
+ if: env.skip != 'true' && matrix.coverage != 'xdebug'
+
+ - name: Unit tests (with coverage)
+ run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --process-isolation --coverage-filter galette/lib --coverage-clover tests/clover.xml tests/Galette/
+ if: env.skip != 'true' && matrix.coverage == 'xdebug'
+
+ - name: Upload code coverage (scrutinizer)
run: |
- ./galette/vendor/bin/docheader check galette/config galette/lib galette/includes galette/install galette/webroot test
+ cd galette
+ composer require scrutinizer/ocular --ignore-platform-reqs
+ cd ..
+ php galette/vendor/bin/ocular code-coverage:upload --format=php-clover tests/clover.xml
+ if: env.skip != 'true' && matrix.coverage == 'xdebug'
+
+ - name: Upload code coverage (codecov)
+ uses: codecov/codecov-action@v3
+ with:
+ file: tests/clover.xml
+ if: env.skip != 'true' && matrix.coverage == 'xdebug'
unsupported-dbs:
runs-on: ubuntu-latest
strategy:
matrix:
include:
+ - { php-version: "8.3", db-image: "postgres:10", always: true}
- { php-version: "8.3", db-image: "mysql:5.6", always: false}
- { php-version: "8.3", db-image: "mariadb:10.3", always: false}
- - { php-version: "8.3", db-image: "postgres:10", always: true}
fail-fast: false
env:
if: env.skip != 'true'
run: TESTENV=FAIL DB=${{ matrix.db-image }} galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/GaletteDbFails/
- unit-tests:
+ lint:
runs-on: ubuntu-latest
+ name: "Lint on PHP ${{ matrix.php-versions }}"
strategy:
- matrix:
- include:
- #always tests higher stable php version with lower db version
- #enable coverage on higher stable php version with higher postrgesql version
- #lower php version
- - { php-version: "8.1", db-image: "mysql:5.7", coverage: none, always: false }
- - { php-version: "8.1", db-image: "mysql:8.1", coverage: none, always: false }
- - { php-version: "8.1", db-image: "mariadb:10.4", coverage: none, always: false }
- - { php-version: "8.1", db-image: "mariadb:11.3", coverage: none, always: false }
- - { php-version: "8.1", db-image: "postgres:11", coverage: none, always: false }
- - { php-version: "8.1", db-image: "postgres:16", coverage: none, always: false }
- #higher stable php version
- - { php-version: "8.3", db-image: "mysql:5.7", coverage: none, always: true }
- - { php-version: "8.3", db-image: "mysql:8.1", coverage: none, always: false }
- - { php-version: "8.3", db-image: "mariadb:10.4", coverage: none, always: true }
- - { php-version: "8.3", db-image: "mariadb:11.3", coverage: none, always: false }
- - { php-version: "8.3", db-image: "postgres:11", coverage: none, always: true }
- - { php-version: "8.3", db-image: "postgres:16", coverage: 'xdebug', always: true }
fail-fast: false
-
- env:
- skip: ${{ matrix.always == false && (github.event_name == 'pull_request' || github.repository != 'galette/galette' || !(github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags'))) }}
- DB: ${{ matrix.db-image }}
-
- services:
- # Label used to access the service container
- db:
- # Docker Hub image
- image: ${{ matrix.db-image }}
- # Provide env variables for both mysql and pgsql
- env:
- POSTGRES_USER: galette_tests
- POSTGRES_PASSWORD: g@l3tte
- POSTGRES_DB: galette_tests
- MYSQL_USER: galette_tests
- MYSQL_PASSWORD: g@l3tte
- MYSQL_ROOT_PASSWORD: g@l3tte
- MYSQL_DATABASE: galette_tests
- # Open network ports for both mysql and pgsql
- ports:
- - 3306:3306
- - 5432:5432
- # Set health checks to wait until postgres has started
- options: >-
- --health-cmd="bash -c 'if [[ -n $(command -v pg_isready) ]]; then pg_isready; else if [[ -n $(command -v mysqladmin) ]]; then mysqladmin ping; else mariadb-admin ping; fi fi'"
- --health-interval=10s
- --health-timeout=5s
- --health-retries=10
-
- name: PHP ${{ matrix.php-version }} ${{ matrix.db-image }} ${{ (matrix.always == false && (github.event_name == 'pull_request' || github.repository != 'galette/galette' || !(github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags')))) && ' (skipped)' || matrix.coverage == 'xdebug' && ' (with coverage)' || ''}}
+ matrix:
+ php-versions: [ '8.1', '8.3' ]
steps:
- name: PHP
- if: env.skip != 'true'
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
ini-values: apc.enable_cli=1
- name: "Show versions"
- if: env.skip != 'true'
run: |
php --version
composer --version
- echo "node $(node --version)"
- echo "npm $(npm --version)"
- docker exec ${{ job.services.db.id }} bash -c "if [[ -n \$(command -v psql) ]]; then psql --version; else if [[ -n \$(command -v mysql) ]]; then mysql --version; else mariadb --version; fi fi"
- name: Checkout
- if: env.skip != 'true'
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: "Restore dependencies cache"
- if: env.skip != 'true'
uses: actions/cache@v4
with:
path: |
${{ runner.os }}-galette-${{ matrix.php-version }}-
- name: Install dependencies
- if: env.skip != 'true'
- run: bin/install_deps
+ run: |
+ cd galette
+ composer install --optimize-autoloader --ignore-platform-reqs
- - name: Init for PostgreSQL (update)
- env:
- POSTGRES_HOST: localhost
- POSTGRES_PORT: 5432
+ - name: CS
run: |
- PGPASSWORD=g@l3tte psql -d galette_tests -a -f tests/pgsql_06.sql -U galette_tests -h localhost
- if: env.skip != 'true' && startsWith(matrix.db-image, 'postgres')
+ galette/vendor/bin/phpcs
- - name: Init for MariaDB (update)
+ - name: Twig CS
run: |
- mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
- mysql -e 'use galette_tests; source tests/mysql_06.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
- if: env.skip != 'true' && (startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb'))
+ galette/vendor/bin/twigcs galette/templates/default --severity error --display blocking
- - name: Update database tests
- run: TESTENV=UPDATE galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/GaletteUpdate/
- if: env.skip != 'true' && matrix.coverage != 'xdebug'
+ - name: Install checker
+ working-directory: galette
+ run: composer require maglnet/composer-require-checker -W --optimize-autoloader --ignore-platform-reqs
- - name: Init for PostgreSQL
- env:
- POSTGRES_HOST: localhost
- POSTGRES_PORT: 5432
+ - name: Check missing symbols
run: |
- PGPASSWORD=g@l3tte psql -d galette_tests -a -f galette/install/scripts/pgsql.sql -U galette_tests -h localhost
- if: env.skip != 'true' && startsWith(matrix.db-image, 'postgres')
+ galette/vendor/bin/composer-require-checker check --config-file=.composer-require-checker.config.json galette/composer.json
- - name: Init for MariaDB
+ - name: PHPStan checks
run: |
- mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
- mysql -e 'use galette_tests; source galette/install/scripts/mysql.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
- if: env.skip != 'true' && (startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb'))
-
- - name: Unit tests
- run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/Galette/
- if: env.skip != 'true' && matrix.coverage != 'xdebug'
-
- - name: Unit tests (with coverage)
- run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --process-isolation --coverage-filter galette/lib --coverage-clover tests/clover.xml tests/Galette/
- if: env.skip != 'true' && matrix.coverage == 'xdebug'
+ galette/vendor/bin/phpstan analyze --ansi --memory-limit=2G --no-interaction --no-progress
- - name: Upload code coverage (scrutinizer)
+ - name: Headers checks
run: |
- cd galette
- composer require scrutinizer/ocular --ignore-platform-reqs
- cd ..
- php galette/vendor/bin/ocular code-coverage:upload --format=php-clover tests/clover.xml
- if: env.skip != 'true' && matrix.coverage == 'xdebug'
-
- - name: Upload code coverage (codecov)
- uses: codecov/codecov-action@v3
- with:
- file: tests/clover.xml
- if: env.skip != 'true' && matrix.coverage == 'xdebug'
+ ./galette/vendor/bin/docheader check galette/config galette/lib galette/includes galette/install galette/webroot test
\ No newline at end of file