CI #828
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: | |
workflow_dispatch: | |
jobs: | |
testsuite: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: ['8.1', '8.3'] | |
db-type: [sqlite, mysql, pgsql] | |
include: | |
- php-version: '8.1' | |
db-type: 'sqlite' | |
services: | |
postgres: | |
image: postgres | |
ports: | |
- 5432:5432 | |
env: | |
POSTGRES_PASSWORD: postgres | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Service | |
if: matrix.db-type == 'mysql' | |
run: | | |
sudo service mysql start | |
mysql -h 127.0.0.1 -u root -proot -e 'CREATE DATABASE cakephp;' | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-version }} | |
extensions: mbstring, intl, pdo_${{ matrix.db-type }} | |
coverage: pcov | |
- name: Get composer cache directory | |
id: composercache | |
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.composercache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Prepare config | |
run: cp config/app_local.ci.php config/app_local.php | |
- name: Composer install | |
run: composer install --no-progress --prefer-dist --optimize-autoloader | |
- name: Assets install | |
run: npm install -g bower && bower install --allow-root && composer assets | |
- name: Run PHPUnit | |
run: | | |
if [[ ${{ matrix.db-type }} == 'sqlite' ]]; then export DB_URL='sqlite:///:memory:'; fi | |
if [[ ${{ matrix.db-type }} == 'mysql' ]]; then export DB_URL='mysql://root:root@127.0.0.1/cakephp'; fi | |
if [[ ${{ matrix.db-type }} == 'pgsql' ]]; then export DB_URL='postgres://postgres:postgres@127.0.0.1/postgres'; fi | |
if [[ ${{ matrix.php-version }} == '8.1' && ${{ matrix.db-type }} == 'mysql' ]]; then | |
vendor/bin/phpunit --coverage-clover=coverage.xml --coverage-text | |
else | |
vendor/bin/phpunit | |
fi | |
- name: Code Coverage Report | |
if: success() && matrix.php-version == '8.1' && matrix.db-type == 'mysql' | |
uses: codecov/codecov-action@v1 | |
validation: | |
name: Coding Standard & Static Analysis | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
extensions: mbstring, intl, pdo_sqlite | |
coverage: none | |
- name: Get composer cache directory | |
id: composercache | |
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.composercache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Prepare config | |
run: cp config/app_local.ci.php config/app_local.php | |
- name: Prepare DB | |
run: export DB_URL='sqlite:///:memory:' | |
- name: Composer install | |
run: composer install --no-progress --prefer-dist --optimize-autoloader | |
- name: DTO check | |
run: bin/cake dto generate -p Sandbox -v -d | |
- name: Code completion generate | |
run: bin/cake generate code_completion | |
- name: Run phpstan | |
run: vendor/bin/phpstan analyse --error-format=github | |
- name: Run phpstan tests | |
run: vendor/bin/phpstan analyse -c tests/phpstan.neon --error-format=github | |
- name: Run phpcs | |
run: composer cs-check |