mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-10 06:16:13 +01:00
Daniel Siepmann
ae233d8de0
This is a TYPO3 extension, a library. We do not track the `composer.lock` file for that reason. Composer itself offers an option to prevent generation of the file. This is now configured to prevent the creation of the file. That should prevent issues with local version of the file. One might change the `composer.json` version constraints but updates might fail due to locked version constraints. This no longer happens if no locked version, due to missing lock file, exist. Composer would render warnings when using `composer install` without a lock file. That's why we update the CI commands to use `composer update` instead. That warning was already rendered within CI due to missing file.
315 lines
10 KiB
YAML
315 lines
10 KiB
YAML
# 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:
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
php-lint:
|
|
name: "PHP linter"
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
- name: "Install PHP"
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: "${{ matrix.php-version }}"
|
|
coverage: none
|
|
tools: composer:v2
|
|
- name: "Run PHP lint"
|
|
run: "composer ci:php:lint"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php-version:
|
|
- "7.4"
|
|
- "8.0"
|
|
- "8.1"
|
|
- "8.2"
|
|
typoscript-lint:
|
|
name: "TypoScript linter"
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
- 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@v4
|
|
- 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@v4
|
|
- 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@v4
|
|
- 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@v4
|
|
- 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@v4
|
|
- name: "Run PHPStan"
|
|
uses: TYPO3-Continuous-Integration/TYPO3-CI-PHPStan@v1
|
|
with:
|
|
config_file: './phpstan.neon'
|
|
code-quality:
|
|
name: "Code quality checks"
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
- name: "Install PHP"
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: "${{ matrix.php-version }}"
|
|
coverage: none
|
|
tools: composer:v2
|
|
- name: "Show Composer version"
|
|
run: composer --version
|
|
- name: "Cache dependencies installed with composer"
|
|
uses: actions/cache@v4
|
|
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 update --no-progress"
|
|
- name: "Run command"
|
|
run: "composer ci:${{ matrix.command }}"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
command:
|
|
- "composer:normalize"
|
|
- "php:sniff"
|
|
php-version:
|
|
- "8.1"
|
|
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@v4
|
|
- 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@v4
|
|
- 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@v4
|
|
- name: "Install PHP"
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: "${{ matrix.php-version }}"
|
|
coverage: none
|
|
tools: composer:v2
|
|
- name: "Show Composer version"
|
|
run: composer --version
|
|
- name: "Cache dependencies installed with composer"
|
|
uses: actions/cache@v4
|
|
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/cms-core:"$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:
|
|
include:
|
|
- typo3-version: "^11.5"
|
|
php-version: "7.4"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "7.4"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.0"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.0"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.1"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.1"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.2"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.2"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.1"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.1"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.2"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.2"
|
|
composer-dependencies: highest
|
|
functional-tests:
|
|
name: "Functional tests"
|
|
runs-on: ubuntu-22.04
|
|
needs: php-lint
|
|
env:
|
|
DB_DATABASE: typo3
|
|
DB_USER: root
|
|
DB_PASSWORD: root
|
|
DB_HOST: localhost
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
- name: "Install PHP"
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: "${{ matrix.php-version }}"
|
|
tools: composer:v2
|
|
extensions: mysqli
|
|
coverage: none
|
|
- name: "Show Composer version"
|
|
run: composer --version
|
|
- name: "Cache dependencies installed with composer"
|
|
uses: actions/cache@v4
|
|
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/cms-core:"$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="$DB_DATABASE";
|
|
export typo3DatabaseHost="$DB_HOST";
|
|
export typo3DatabaseUsername="$DB_USER";
|
|
export typo3DatabasePassword="$DB_PASSWORD";
|
|
composer ci:tests:functional
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- typo3-version: "^11.5"
|
|
php-version: "7.4"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "7.4"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.0"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.0"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.1"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.1"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.2"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.2"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.1"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.1"
|
|
composer-dependencies: highest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.2"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.2"
|
|
composer-dependencies: highest
|