CI #950
This file contains hidden or 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.2', '8.5'] | |
| db-type: ['sqlite', 'mysql', 'pgsql'] | |
| prefer-lowest: [''] | |
| include: | |
| - php-version: '8.2' | |
| db-type: 'sqlite' | |
| prefer-lowest: 'prefer-lowest' | |
| services: | |
| postgres: | |
| image: postgres | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_PASSWORD: postgres | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - 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-${{ matrix.php-version }}-${{ matrix.db-type }}-${{ matrix.prefer-lowest || 'default' }}-${{ hashFiles('composer.json', 'composer.lock') }} | |
| - name: Composer install | |
| run: | | |
| composer --version | |
| if ${{ matrix.prefer-lowest == 'prefer-lowest' }} | |
| then | |
| composer update --prefer-lowest --prefer-stable | |
| composer require --dev dereuromark/composer-prefer-lowest:dev-master | |
| else | |
| composer install --no-progress --prefer-dist --optimize-autoloader | |
| fi | |
| - 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.2' ]]; then | |
| vendor/bin/phpunit --coverage-clover=coverage.xml | |
| else | |
| vendor/bin/phpunit | |
| fi | |
| - name: Validate prefer-lowest | |
| if: matrix.prefer-lowest == 'prefer-lowest' | |
| run: vendor/bin/validate-prefer-lowest -m | |
| - name: Upload coverage reports to Codecov | |
| if: success() && matrix.php-version == '8.2' | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| validation: | |
| name: Coding Standard & Static Analysis | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| extensions: mbstring, intl | |
| 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-validation-${{ hashFiles('composer.json', 'composer.lock') }} | |
| - name: Composer Install | |
| run: composer stan-setup | |
| - name: Run phpstan | |
| run: composer stan | |
| - name: Run phpcs | |
| run: composer cs-check | |
| assets: | |
| name: Tailwind asset build is up to date | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Regenerate webroot/css/tailwind.css | |
| run: composer assets | |
| - name: Fail if generated CSS is stale | |
| run: | | |
| if ! git diff --quiet -- webroot/css/tailwind.css; then | |
| echo "::error::webroot/css/tailwind.css is out of date. Run 'composer assets' locally and commit the regenerated file. See docs/Assets.md." | |
| git diff -- webroot/css/tailwind.css | head -40 | |
| exit 1 | |
| fi |