name: CI on: [push] jobs: check-composer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Validate composer.json run: composer validate php-linting: runs-on: ubuntu-latest strategy: matrix: php-version: - 7.4 - 8.0 steps: - name: Checkout uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: PHP lint run: "find *.php Classes Configuration Tests -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l" check-dependencies-TYPO3-v10: runs-on: ubuntu-latest needs: - check-composer strategy: matrix: php-version: - '7.4' typo3-version: - '^10.4' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-plugins - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --no-plugins --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: Missing composer requirements run: ./vendor/bin/composer-require-checker check --config-file dependency-checker.json check-dependencies-TYPO3-v11: runs-on: ubuntu-latest needs: - check-composer strategy: matrix: php-version: - '7.4' - '8.0' typo3-version: - '11.2.*' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-plugins - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --no-plugins --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: Missing composer requirements run: ./vendor/bin/composer-require-checker check --config-file dependency-checker.json xml-linting: runs-on: ubuntu-latest needs: - check-composer steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "7.4" - name: Install xmllint run: sudo apt-get install libxml2-utils - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - 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: PHPCodeSniffer configuration file run: xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd --noout phpcs.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: - xml-linting steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "7.4" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Coding Guideline run: ./vendor/bin/phpcs tests-sqlite-TYPO3-v10: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-v10 - xml-linting strategy: matrix: php-version: - '7.4' typo3-version: - '^10.4' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: ./vendor/bin/phpunit --testdox tests-sqlite-TYPO3-v11: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-v11 - xml-linting strategy: matrix: php-version: - '7.4' - '8.0' typo3-version: - '11.2.*' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: ./vendor/bin/phpunit --testdox tests-mysql-TYPO3-v10: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-v10 - xml-linting strategy: matrix: php-version: - '7.4' typo3-version: - '^10.4' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Start MySQL run: sudo /etc/init.d/mysql start - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: |- export typo3DatabaseDriver="mysqli" export typo3DatabaseName="typo3" export typo3DatabaseHost="127.0.0.1" export typo3DatabaseUsername="root" export typo3DatabasePassword="root" ./vendor/bin/phpunit --testdox tests-mysql-TYPO3-v11: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-V11 - xml-linting strategy: matrix: php-version: - '7.4' - '8.0' typo3-version: - '11.2.*' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Start MySQL run: sudo /etc/init.d/mysql start - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "typo3/cms-backend:${{ matrix.typo3-version }}" "typo3/cms-core:${{ matrix.typo3-version }}" "typo3/cms-dashboard:${{ matrix.typo3-version }}" - name: PHPUnit Tests run: |- export typo3DatabaseDriver="mysqli" export typo3DatabaseName="typo3" export typo3DatabaseHost="127.0.0.1" export typo3DatabaseUsername="root" export typo3DatabasePassword="root" ./vendor/bin/phpunit --testdox code-quality-TYPO3-v10: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-v10 strategy: matrix: php-version: - '7.4' typo3-version: - '^10.4' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "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 code-quality-TYPO3-v11: runs-on: ubuntu-latest needs: - check-dependencies-TYPO3-v11 strategy: matrix: php-version: - '7.4' - '8.0' typo3-version: - '11.2.*' steps: - uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" - name: Get Composer Cache Directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Switch to expected TYPO3 Version run: composer require --prefer-dist --no-progress --update-with-all-dependencies "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