Repository navigation
Fix: don't overwrite an unrelated Cloudinary asset on public ID collision #490
Workflow file for this run
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: | |
| branches: [ develop, master ] | |
| workflow_call: | |
| pull_request: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| php-version: [ '7.4', '8.3' ] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php-version }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - name: Cache Composer | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.composer/cache | |
| key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer-${{ matrix.php }}- | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run linting | |
| run: npm run lint | |
| - name: Run build | |
| run: npm run build | |
| phpstan: | |
| name: PHPStan | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.3' | |
| - name: Cache Composer | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.composer/cache | |
| key: ${{ runner.os }}-composer-phpstan-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer-phpstan- | |
| - name: Install Composer dependencies | |
| run: composer install --no-interaction --no-progress | |
| - name: Cache PHPStan result cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: .phpstan-cache | |
| key: ${{ runner.os }}-phpstan-${{ hashFiles('**/composer.lock', 'phpstan.neon.dist') }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-phpstan-${{ hashFiles('**/composer.lock', 'phpstan.neon.dist') }}- | |
| ${{ runner.os }}-phpstan- | |
| - name: Run PHPStan | |
| run: composer phpstan | |
| unit: | |
| name: Unit (PHPUnit) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - name: Cache Composer | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.composer/cache | |
| key: ${{ runner.os }}-composer-unit-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer-unit- | |
| # wp-env downloads WordPress and the core PHPUnit suite into this | |
| # directory, which is roughly a gigabyte of git clones. Caching it keeps | |
| # `env:start` from re-cloning them on every run. The key covers the | |
| # wp-env config and version, because a change to either means different | |
| # sources have to be downloaded. | |
| - name: Cache wp-env sources | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.wp-env | |
| key: ${{ runner.os }}-wp-env-${{ hashFiles('.wp-env.json', 'package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-wp-env- | |
| # Also installs the Composer dependencies through the postinstall script. | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Start wp-env | |
| run: npm run env:start | |
| - name: Run unit tests | |
| run: npm run test:unit | |
| - name: Stop wp-env | |
| if: always() | |
| run: npm run env:stop | |
| e2e: | |
| name: E2E (Playwright) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install Playwright browsers | |
| run: npx playwright install --with-deps chromium | |
| - name: Build assets | |
| run: npm run build | |
| - name: Start wp-env | |
| run: npm run env:start | |
| - name: Run E2E tests | |
| env: | |
| CLOUDINARY_E2E_URL: ${{ secrets.CLOUDINARY_E2E_URL }} | |
| run: npm run test:e2e | |
| - name: Stop wp-env | |
| if: always() | |
| run: npm run env:stop | |
| - name: Upload Playwright artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-artifacts | |
| path: artifacts/ | |
| retention-days: 7 |