name: CI on: [push, pull_request] jobs: run-tests: name: Tests with PHP ${{ matrix.php-version }} runs-on: ubuntu-latest env: VUFIND_HOME: $GITHUB_WORKSPACE VUFIND_LOCAL_DIR: $GITHUB_WORKSPACE/local strategy: matrix: php-version: ['8.1', '8.2', '8.3'] # We run PHP-based tests on all platforms (qa-php), but we only include PHP AND # Javascript-related tests (qa-console) once. Since the JS results should be the # same on all platforms, we don't need to repeat them. include: - php-version: 8.1 phing_tasks: "qa-php" - php-version: 8.2 phing_tasks: "qa-console" - php-version: 8.3 phing_tasks: "qa-php" steps: - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: intl, xsl tools: composer:2.1.6 ini-values: error_reporting=E_ALL - name: Checkout uses: actions/checkout@v4 - name: Disable Solr installation run: touch solr/.disableAutomaticInstall - name: Setup node if: ${{ matrix.phing_tasks == 'qa-console' }} uses: actions/setup-node@v4 with: node-version: '20' - name: Cache NPM dependencies if: ${{ matrix.phing_tasks == 'qa-console' }} uses: actions/cache@v4 with: path: ~/.npm key: npm-${{ hashFiles('package-lock.json') }} restore-keys: npm- - name: Install node dependencies if: ${{ matrix.phing_tasks == 'qa-console' }} # Use --ignore-scripts to prevent pre/post install scripts from running # (a security precaution). run: npm install --ignore-scripts - name: Rebuild node-sass dependency if: ${{ matrix.phing_tasks == 'qa-console' }} # The --ignore-scripts parameter to npm install prevents node-sass from # fully building. We need to force it to build so the SCSS check in the # qa-console task runs successfully. run: npm rebuild node-sass - name: Get composer cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache composer dependencies uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- - name: Cache php-cs-fixer data uses: actions/cache@v4 with: path: .php_cs_cache key: "php-${{ matrix.php-version }}-php-cs-fixer-${{ github.sha }}" restore-keys: "php-${{ matrix.php-version }}-php-cs-fixer-" - name: Cache phpstan data uses: actions/cache@v4 with: path: .phpstan_cache key: "php-${{ matrix.php-version }}-phpstan-${{ github.sha }}" restore-keys: "php-${{ matrix.php-version }}-phpstan-" - name: Cache PHP_CodeSniffer data uses: actions/cache@v4 with: path: tests/phpcs.cache.json key: "php-${{ matrix.php-version }}-phpcs-${{ github.sha }}" restore-keys: "php-${{ matrix.php-version }}-phpcs-" - name: Install composer dependencies run: composer install - name: Run tests run: vendor/bin/phing ${{ matrix.phing_tasks }}