name: CI on: push: branches: - main pull_request: jobs: check-composer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: 8.2 coverage: none tools: composer:v2 env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Validate composer.json run: composer validate php-linting: runs-on: ubuntu-latest strategy: matrix: php-version: - 7.2 - 7.3 - 7.4 - 8.0 - 8.1 - 8.2 steps: - name: Checkout uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none - 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" coverage: none tools: composer:v2 env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install xmllint run: sudo apt update && sudo apt install libxml2-utils - name: Install dependencies run: composer update --prefer-dist --no-progress - name: PHPUnit configuration file run: xmllint --schema vendor/phpunit/phpunit/phpunit.xsd --noout phpunit.xml.dist coding-guideline: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "8.1" coverage: none tools: composer:v2 env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies run: composer update --prefer-dist --no-progress - name: Coding Guideline run: ./vendor/bin/php-cs-fixer fix --dry-run --diff tests-mysql: runs-on: ubuntu-latest needs: - xml-linting strategy: matrix: include: - db-version: '5.7' php-version: '7.2' typo3-version: '^10.4' - db-version: '5.7' php-version: '7.3' typo3-version: '^10.4' - db-version: '8' php-version: '7.4' typo3-version: '^10.4' - db-version: '8' php-version: '7.4' typo3-version: '^11.5' - db-version: '8' php-version: '8.0' typo3-version: '^11.5' - db-version: '8' php-version: '8.1' typo3-version: '^11.5' - db-version: '8' php-version: '8.2' typo3-version: '^11.5' - db-version: '8' php-version: '8.1' typo3-version: '^12.4' - db-version: '8' php-version: '8.2' typo3-version: '^12.4' steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none tools: composer:v2 env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Setup MySQL uses: mirromutth/mysql-action@v1.1 with: mysql version: '${{ matrix.db-version }}' mysql database: 'typo3' mysql root password: 'root' - name: Wait for MySQL run: | while ! mysqladmin ping --host=127.0.0.1 --password=root --silent; do sleep 1 done - name: Install dependencies with expected TYPO3 version run: composer require --prefer-dist --no-progress "typo3/cms-core:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: |- export typo3DatabaseDriver="pdo_mysql" export typo3DatabaseName="typo3" export typo3DatabaseHost="127.0.0.1" export typo3DatabaseUsername="root" export typo3DatabasePassword="root" ./vendor/bin/phpunit --testdox code-quality: runs-on: ubuntu-latest strategy: matrix: include: - php-version: '7.2' typo3-version: '^10.4' - php-version: '7.3' typo3-version: '^10.4' - php-version: '7.4' typo3-version: '^10.4' - php-version: '7.4' typo3-version: '^11.5' - php-version: '8.0' typo3-version: '^11.5' - php-version: '8.1' typo3-version: '^11.5' - php-version: '8.2' typo3-version: '^11.5' - php-version: '8.1' typo3-version: '^12.4' - php-version: '8.2' typo3-version: '^12.4' steps: - uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none tools: composer:v2 env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies with expected TYPO3 version run: composer require --prefer-dist --no-progress "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: Code Quality (by PHPStan) run: ./vendor/bin/phpstan analyse