# This workflow does not use the Composer actions for calling the tools. # Use this workflow if you do not intend to call the code quality checks locally, # but only in the CI builds. # # Note that, to keep things fast, pull requests and pushes do not trigger this workflow. # If you are going to use this workflow, please copy the corresponding trigger settings from the `ci.yml` workflow. --- name: CI with predefined GitHub actions on: workflow_dispatch: jobs: php-lint: name: "PHP linter" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none tools: composer:v2.3 - name: "Run PHP lint" run: "composer ci:php:lint" strategy: fail-fast: false matrix: php-version: - "7.2" - "7.3" - "7.4" typoscript-lint: name: "TypoScript linter" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run TypoScript lint" uses: TYPO3-Continuous-Integration/TYPO3-CI-Typoscript-Lint@v1 php-codesniffer: name: "PHP Codesniffer" runs-on: ubuntu-22.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run PHP Codesniffer" uses: TYPO3-Continuous-Integration/TYPO3-CI-PHP-Codesniffer@v1 yaml-lint: name: "YAML linter" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run YAML lint" uses: TYPO3-Continuous-Integration/TYPO3-CI-YAML-Lint@v1 json-lint: name: "JSON linter" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run JSON lint" uses: TYPO3-Continuous-Integration/TYPO3-CI-JSON-Lint@v1 php-cs-fixer: name: "PHP CS Fixer" runs-on: ubuntu-22.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run PHP CS Fixer" uses: TYPO3-Continuous-Integration/TYPO3-CI-PHP-CS-Fixer@v1 phpstan-check: name: "PHPStan check" runs-on: ubuntu-22.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run PHPStan" uses: TYPO3-Continuous-Integration/TYPO3-CI-PHPStan@v1 with: config_file: './phpstan.neon' copypaste-detector: name: "Copy'n'paste detector" runs-on: ubuntu-22.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run the Copy'n'paste Detector" uses: TYPO3-Continuous-Integration/TYPO3-CI-Copy-Paste-Detector@v1 code-quality: name: "Code quality checks" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none tools: composer:v2.3 - name: "Show Composer version" run: composer --version - name: "Cache dependencies installed with composer" uses: actions/cache@v3 with: key: "php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}" path: ~/.cache/composer restore-keys: "php${{ matrix.php-version }}-composer-\n" - name: "Install Composer dependencies" run: "composer install --no-progress" - name: "Run command" run: "composer ci:${{ matrix.command }}" strategy: fail-fast: false matrix: command: - "composer:normalize" - "php:sniff" php-version: - "7.4" code-quality-frontend: name: "Code quality frontend checks" runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: command: - "style" - "js" steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Install modules" run: yarn - name: "Run command" run: "yarn lint:${{ matrix.command }}" xliff-lint: name: "Xliff linter" runs-on: ubuntu-22.04 steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Run the xliff lint" uses: TYPO3-Continuous-Integration/TYPO3-CI-Xliff-Lint@v1 unit-tests: name: "Unit tests" runs-on: ubuntu-22.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" coverage: none tools: composer:v2.3 - name: "Show Composer version" run: composer --version - name: "Cache dependencies installed with composer" uses: actions/cache@v3 with: key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}" path: ~/.cache/composer restore-keys: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-\n" - name: "Install TYPO3 Core" env: TYPO3: "${{ matrix.typo3-version }}" run: | composer require --no-progress typo3/minimal:"$TYPO3" composer show - name: "Install lowest dependencies with composer" if: "matrix.composer-dependencies == 'lowest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest composer show - name: "Install highest dependencies with composer" if: "matrix.composer-dependencies == 'highest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies composer show - name: "Run unit tests" run: "composer ci:tests:unit" strategy: fail-fast: false matrix: composer-dependencies: - highest - lowest php-version: - "7.2" - "7.3" - "7.4" typo3-version: - "^9.5" - "^10.4" functional-tests: name: "Functional tests" runs-on: ubuntu-18.04 needs: php-lint steps: - name: "Checkout" uses: actions/checkout@v3 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" tools: composer:v2.3 extensions: mysqli coverage: none - name: "Show Composer version" run: composer --version - name: "Cache dependencies installed with composer" uses: actions/cache@v3 with: key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}" path: ~/.cache/composer restore-keys: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-\n" - name: "Install TYPO3 Core" env: TYPO3: "${{ matrix.typo3-version }}" run: | composer require --no-progress typo3/minimal:"$TYPO3" composer show - name: "Install lowest dependencies with composer" if: "matrix.composer-dependencies == 'lowest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest composer show - name: "Install highest dependencies with composer" if: "matrix.composer-dependencies == 'highest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies composer show - name: "Start MySQL" run: "sudo /etc/init.d/mysql start" - name: "Run functional tests" run: | export typo3DatabaseName="typo3"; export typo3DatabaseHost="127.0.0.1"; export typo3DatabaseUsername="root"; export typo3DatabasePassword="root"; composer ci:tests:functional strategy: fail-fast: false matrix: include: - typo3-version: "^10.4" php-version: "7.2" composer-dependencies: highest - typo3-version: "^10.4" php-version: "7.2" composer-dependencies: lowest - typo3-version: "^10.4" php-version: "7.3" composer-dependencies: highest - typo3-version: "^10.4" php-version: "7.3" composer-dependencies: lowest - typo3-version: "^10.4" php-version: "7.4" composer-dependencies: highest - typo3-version: "^10.4" php-version: "7.4" composer-dependencies: lowest