mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-10 07:16:16 +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.
295 lines
10 KiB
YAML
295 lines
10 KiB
YAML
---
|
|
# This GitHub Actions workflow uses the same development tools that are also installed locally
|
|
# via Composer or PHIVE and calls them using the Composer scripts.
|
|
name: CI with Composer scripts
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
schedule:
|
|
- cron: '15 3 * * 1'
|
|
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: "Show the Composer configuration"
|
|
run: "composer config --global --list"
|
|
- name: "Run PHP lint"
|
|
run: "composer ci:php:lint"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php-version:
|
|
- "7.4"
|
|
- "8.0"
|
|
- "8.1"
|
|
- "8.2"
|
|
- "8.3"
|
|
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: "Show the Composer configuration"
|
|
run: "composer config --global --list"
|
|
- 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"
|
|
- "composer:psr-verify"
|
|
- "json:lint"
|
|
- "php:cs-fixer"
|
|
- "php:sniff"
|
|
- "php:stan"
|
|
- "ts:lint"
|
|
- "yaml:lint"
|
|
- "xliff:lint"
|
|
php-version:
|
|
- "8.3"
|
|
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 }}"
|
|
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: "Show the Composer configuration"
|
|
run: "composer config --global --list"
|
|
- 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-ansi --no-interaction --no-progress --no-install 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: "^11.5"
|
|
php-version: "8.3"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.3"
|
|
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
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.3"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.3"
|
|
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: "Show the Composer configuration"
|
|
run: "composer config --global --list"
|
|
- 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-ansi --no-interaction --no-progress --no-install 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: "^11.5"
|
|
php-version: "8.3"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^11.5"
|
|
php-version: "8.3"
|
|
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
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.3"
|
|
composer-dependencies: lowest
|
|
- typo3-version: "^12.4"
|
|
php-version: "8.3"
|
|
composer-dependencies: highest
|