name: CI on: - pull_request jobs: check-composer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Validate composer.json run: composer validate php-linting: runs-on: ubuntu-latest strategy: matrix: php-version: - 8.1 - 8.2 - 8.3 steps: - name: Checkout uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" tools: composer:v2 - name: PHP lint run: "find *.php Classes Configuration Tests -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l" xml-linting: runs-on: ubuntu-latest needs: [check-composer] steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "8.2" tools: composer:v2 - name: Install xmllint run: sudo apt update && sudo apt install libxml2-utils - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: PHPUnit configuration file run: xmllint --schema vendor/phpunit/phpunit/phpunit.xsd --noout phpunit.xml.dist - name: Fetch schema for xliff run: wget https://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd --output-document=.Build/xliff-core-1.2-strict.xsd - name: TYPO3 language files run: xmllint --schema .Build/xliff-core-1.2-strict.xsd --noout $(find Resources -name '*.xlf') coding-guideline: runs-on: ubuntu-latest needs: - php-linting steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "8.2" tools: composer:v2 - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Coding Guideline run: ./vendor/bin/php-cs-fixer fix --dry-run --diff code-quality: runs-on: ubuntu-latest needs: - php-linting strategy: matrix: include: - php-version: '8.1' typo3-version: '^12.4' - php-version: '8.2' typo3-version: '^12.4' - php-version: '8.3' typo3-version: '^12.4' - php-version: '8.2' typo3-version: '^13.4' - php-version: '8.3' typo3-version: '^13.4' steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" tools: composer:v2 - name: Install dependencies with expected TYPO3 version run: composer require --no-interaction --prefer-dist --no-progress "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-extbase:${{ matrix.typo3-version }}" "typo3/cms-frontend:${{ matrix.typo3-version }}" "typo3/cms-fluid:${{ matrix.typo3-version }}" "typo3/cms-filelist:${{ matrix.typo3-version }}" "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-fluid-styled-content:${{ matrix.typo3-version }}" - name: Code Quality (by PHPStan) run: ./vendor/bin/phpstan analyse tests: runs-on: ubuntu-latest needs: - php-linting - xml-linting strategy: matrix: include: - php-version: '8.1' typo3-version: '^12.4' - php-version: '8.2' typo3-version: '^12.4' - php-version: '8.3' typo3-version: '^12.4' - php-version: '8.2' typo3-version: '^13.4' - php-version: '8.3' typo3-version: '^13.4' steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" tools: composer:v2 - name: Install dependencies with expected TYPO3 version run: composer require --no-interaction --prefer-dist --no-progress "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-extbase:${{ matrix.typo3-version }}" "typo3/cms-frontend:${{ matrix.typo3-version }}" "typo3/cms-fluid:${{ matrix.typo3-version }}" "typo3/cms-filelist:${{ matrix.typo3-version }}" "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-fluid-styled-content:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: ./vendor/bin/phpunit --display-incomplete --display-skipped --display-deprecations --display-errors --display-notices --display-warnings