mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-21 13:36:13 +01:00
Merge branch 'main' into TASK/fix-package.json-for-dependabot
This commit is contained in:
commit
8f9b1fffcc
54 changed files with 372 additions and 189 deletions
14
.github/ISSUE_TEMPLATE/technical_feedback.md
vendored
14
.github/ISSUE_TEMPLATE/technical_feedback.md
vendored
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
name: Technical Feedback
|
||||
about: Provide technical feedback to help us improve
|
||||
title: "Technical Feedback: Please add a speaking title"
|
||||
labels: 'feedback'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the area**
|
||||
A short introduction to the area, e.g. a decision regarding file formats, location, etc.
|
||||
|
||||
**Feedback**
|
||||
Your feedback, e.g. what would you do instead, what are pros and cons of the different ways in doing things.
|
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
@ -9,7 +9,7 @@ updates:
|
|||
# adjust this number according to your own milestones if used.
|
||||
milestone: 12
|
||||
commit-message:
|
||||
prefix: "[TASK] "
|
||||
prefix: "[TASK][Dependabot] "
|
||||
|
||||
- package-ecosystem: "composer"
|
||||
directory: "/"
|
||||
|
@ -30,7 +30,7 @@ updates:
|
|||
# adjust this number according to your own milestones if used.
|
||||
milestone: 12
|
||||
commit-message:
|
||||
prefix: "[TASK] "
|
||||
prefix: "[TASK][Dependabot] "
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
|
@ -40,4 +40,4 @@ updates:
|
|||
# adjust this number according to your own milestones if used.
|
||||
milestone: 12
|
||||
commit-message:
|
||||
prefix: "[TASK] "
|
||||
prefix: "[TASK][Dependabot] "
|
||||
|
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -83,6 +83,7 @@ jobs:
|
|||
- "json:lint"
|
||||
- "php:cs-fixer"
|
||||
- "php:mess"
|
||||
- "php:rector"
|
||||
- "php:sniff"
|
||||
- "php:stan"
|
||||
- "typoscript:lint"
|
||||
|
@ -326,6 +327,7 @@ jobs:
|
|||
documentation:
|
||||
name: Documentation
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
|
|
@ -8,8 +8,8 @@ stages:
|
|||
|
||||
include:
|
||||
- '/.gitlab/pipeline/jobs/.composer-update.yml'
|
||||
- '/.gitlab/pipeline/jobs/.default.yml'
|
||||
- '/.gitlab/pipeline/jobs/.default-frontend.yml'
|
||||
- '/.gitlab/pipeline/jobs/.default.yml'
|
||||
- '/.gitlab/pipeline/jobs/.variables.yml'
|
||||
- '/.gitlab/pipeline/jobs/build-composer-dependencies.yml'
|
||||
- '/.gitlab/pipeline/jobs/composer-normalize.yml'
|
||||
|
@ -20,21 +20,22 @@ include:
|
|||
- '/.gitlab/pipeline/jobs/func-php8.0-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.1-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.1-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.1-v12-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.1-v12-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v12-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/func-php8.2-v12-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/javascript-lint.yml'
|
||||
- '/.gitlab/pipeline/jobs/json-lint.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-cs-fixer.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-lint-php7.4.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-lint-php8.0.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-lint-php8.1.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-lint-php8.2.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-lint-php8.3.yml'
|
||||
- '/.gitlab/pipeline/jobs/phpcs.yml'
|
||||
- '/.gitlab/pipeline/jobs/php-cs-fixer.yml'
|
||||
- '/.gitlab/pipeline/jobs/rector.yml'
|
||||
- '/.gitlab/pipeline/jobs/typoscript-lint.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-lowest.yml'
|
||||
|
@ -42,14 +43,14 @@ include:
|
|||
- '/.gitlab/pipeline/jobs/unit-php8.0-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v12-highest.yml'
|
||||
- '/.gitlab/pipeline/jobs/unit-php8.3-v12-lowest.yml'
|
||||
- '/.gitlab/pipeline/jobs/xliff-lint.yml'
|
||||
|
|
187
.gitlab/pipeline/ci/php.ini
Normal file
187
.gitlab/pipeline/ci/php.ini
Normal file
|
@ -0,0 +1,187 @@
|
|||
[PHP]
|
||||
engine = On
|
||||
short_open_tag = Off
|
||||
precision = 14
|
||||
output_buffering = 4096
|
||||
zlib.output_compression = Off
|
||||
implicit_flush = Off
|
||||
unserialize_callback_func =
|
||||
serialize_precision = -1
|
||||
disable_functions =
|
||||
disable_classes =
|
||||
zend.enable_gc = On
|
||||
expose_php = Off
|
||||
; Resource Limits ;
|
||||
max_execution_time = 600
|
||||
request_terminate_timeout = 0
|
||||
max_input_time = -1
|
||||
;max_input_nesting_level = 64
|
||||
max_input_vars = 5000
|
||||
memory_limit = -1
|
||||
; Error handling and logging ;
|
||||
error_reporting = E_ALL
|
||||
display_errors = On
|
||||
display_startup_errors = On
|
||||
log_errors = On
|
||||
log_errors_max_len = 1024
|
||||
ignore_repeated_errors = Off
|
||||
ignore_repeated_source = Off
|
||||
report_memleaks = On
|
||||
;xmlrpc_errors = 0
|
||||
;xmlrpc_error_number = 0
|
||||
html_errors = On
|
||||
; Data Handling ;
|
||||
variables_order = "EGPCS"
|
||||
request_order = "GP"
|
||||
register_argc_argv = Off
|
||||
auto_globals_jit = On
|
||||
post_max_size = 100M
|
||||
auto_prepend_file =
|
||||
auto_append_file =
|
||||
default_mimetype = "text/html"
|
||||
default_charset = "UTF-8"
|
||||
; Paths and Directories ;
|
||||
doc_root =
|
||||
user_dir =
|
||||
enable_dl = Off
|
||||
cgi.fix_pathinfo=0
|
||||
; File Uploads ;
|
||||
file_uploads = On
|
||||
upload_max_filesize = 100M
|
||||
max_file_uploads = 20
|
||||
; Fopen wrappers ;
|
||||
allow_url_fopen = On
|
||||
allow_url_include = Off
|
||||
default_socket_timeout = 60
|
||||
;auto_detect_line_endings = Off
|
||||
; Dynamic Extensions ;
|
||||
|
||||
[CLI Server]
|
||||
cli_server.color = On
|
||||
|
||||
[Date]
|
||||
date.timezone = UTC
|
||||
|
||||
[Pdo_mysql]
|
||||
pdo_mysql.cache_size = 2000
|
||||
pdo_mysql.default_socket=
|
||||
|
||||
[SQL]
|
||||
sql.safe_mode = Off
|
||||
|
||||
[ODBC]
|
||||
odbc.allow_persistent = On
|
||||
odbc.check_persistent = On
|
||||
odbc.max_persistent = -1
|
||||
odbc.max_links = -1
|
||||
odbc.defaultlrl = 4096
|
||||
odbc.defaultbinmode = 1
|
||||
|
||||
[Interbase]
|
||||
ibase.allow_persistent = 1
|
||||
ibase.max_persistent = -1
|
||||
ibase.max_links = -1
|
||||
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
|
||||
ibase.dateformat = "%Y-%m-%d"
|
||||
ibase.timeformat = "%H:%M:%S"
|
||||
|
||||
[MySQLi]
|
||||
mysqli.max_persistent = -1
|
||||
mysqli.allow_persistent = On
|
||||
mysqli.max_links = -1
|
||||
mysqli.cache_size = 2000
|
||||
mysqli.default_port = 3306
|
||||
mysqli.default_socket =
|
||||
mysqli.default_host =
|
||||
mysqli.default_user =
|
||||
mysqli.default_pw =
|
||||
mysqli.reconnect = Off
|
||||
|
||||
[mysqlnd]
|
||||
mysqlnd.collect_statistics = On
|
||||
mysqlnd.collect_memory_statistics = Off
|
||||
|
||||
[PostgreSQL]
|
||||
pgsql.allow_persistent = On
|
||||
pgsql.auto_reset_persistent = Off
|
||||
pgsql.max_persistent = -1
|
||||
pgsql.max_links = -1
|
||||
pgsql.ignore_notice = 0
|
||||
pgsql.log_notice = 0
|
||||
|
||||
[bcmath]
|
||||
bcmath.scale = 0
|
||||
|
||||
[Session]
|
||||
session.save_handler = files
|
||||
session.use_strict_mode = 0
|
||||
session.use_cookies = 1
|
||||
session.use_only_cookies = 1
|
||||
session.name = PHPSESSID
|
||||
session.auto_start = 0
|
||||
session.cookie_lifetime = 0
|
||||
session.cookie_path = /
|
||||
session.cookie_domain =
|
||||
session.cookie_httponly =
|
||||
session.serialize_handler = php
|
||||
session.gc_probability = 0
|
||||
session.gc_divisor = 1000
|
||||
session.gc_maxlifetime = 1440
|
||||
session.referer_check =
|
||||
session.cache_limiter = nocache
|
||||
session.cache_expire = 180
|
||||
session.use_trans_sid = 0
|
||||
session.hash_function = 0
|
||||
session.hash_bits_per_character = 5
|
||||
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
|
||||
|
||||
[Assertion]
|
||||
zend.assertions = -1
|
||||
|
||||
[Tidy]
|
||||
tidy.clean_output = Off
|
||||
|
||||
[soap]
|
||||
soap.wsdl_cache_enabled=1
|
||||
soap.wsdl_cache_dir="/tmp"
|
||||
soap.wsdl_cache_ttl=86400
|
||||
soap.wsdl_cache_limit = 5
|
||||
|
||||
|
||||
[ldap]
|
||||
ldap.max_links = -1
|
||||
|
||||
[opcache]
|
||||
opcache.enable=1
|
||||
opcache.enable_cli=1
|
||||
opcache.memory_consumption=500
|
||||
opcache.interned_strings_buffer=16
|
||||
opcache.max_accelerated_files=1000000
|
||||
;opcache.max_wasted_percentage=5
|
||||
;opcache.use_cwd=1
|
||||
opcache.validate_timestamps=1
|
||||
opcache.revalidate_freq=0
|
||||
;opcache.revalidate_path=0
|
||||
;opcache.save_comments=1
|
||||
opcache.fast_shutdown=1
|
||||
;opcache.enable_file_override=0
|
||||
;opcache.optimization_level=0xffffffff
|
||||
;opcache.inherited_hack=1
|
||||
;opcache.dups_fix=0
|
||||
;opcache.blacklist_filename=
|
||||
;opcache.max_file_size=0
|
||||
;opcache.consistency_checks=0
|
||||
;opcache.force_restart_timeout=180
|
||||
;opcache.error_log=
|
||||
;opcache.log_verbosity_level=1
|
||||
;opcache.preferred_memory_model=
|
||||
;opcache.protect_memory=0
|
||||
;opcache.restrict_api=
|
||||
;opcache.mmap_base=
|
||||
;opcache.file_cache=
|
||||
;opcache.file_cache_only=0
|
||||
;opcache.file_cache_consistency_checks=1
|
||||
;opcache.file_cache_fallback=1
|
||||
;opcache.huge_code_pages=1
|
||||
;opcache.validate_permission=0
|
||||
;opcache.validate_root=0
|
|
@ -1,4 +1,8 @@
|
|||
.default:
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
before_script:
|
||||
- bash .gitlab/build/docker_install.sh > /dev/null
|
||||
variables:
|
||||
PHP_INI_SCAN_DIR: "/etc/php"
|
||||
script:
|
||||
- cp $CI_PROJECT_DIR/.gitlab/pipeline/ci/php.ini /usr/local/etc/php/php.ini; # copy php.ini into image
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php7.4-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||
image: ghcr.io/typo3/core-testing-php74:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php7.4-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||
image: ghcr.io/typo3/core-testing-php74:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.0-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||
image: ghcr.io/typo3/core-testing-php80:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.0-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||
image: ghcr.io/typo3/core-testing-php80:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.1-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.1-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.1-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.1-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.2-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.2-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.2-v12-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.2-v12-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.3-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.3-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.3-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
func-php8.3-v12-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
services:
|
||||
- mariadb:10
|
||||
stage: test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
php-lint-php7.4:
|
||||
extends: .composer-update
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||
image: ghcr.io/typo3/core-testing-php74:latest
|
||||
stage: lint
|
||||
needs: [ ]
|
||||
script:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
php-lint-php8.0:
|
||||
extends: .composer-update
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||
image: ghcr.io/typo3/core-testing-php80:latest
|
||||
stage: lint
|
||||
needs: [ ]
|
||||
script:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
php-lint-php8.1:
|
||||
extends: .composer-update
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
stage: lint
|
||||
needs: [ ]
|
||||
script:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
php-lint-php8.2:
|
||||
extends: .composer-update
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
stage: lint
|
||||
needs: [ ]
|
||||
script:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
php-lint-php8.3:
|
||||
extends: .composer-update
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
stage: lint
|
||||
needs: [ ]
|
||||
script:
|
||||
|
|
11
.gitlab/pipeline/jobs/rector.yml
Normal file
11
.gitlab/pipeline/jobs/rector.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
rector:
|
||||
extends: .default
|
||||
stage: codestyle
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
- php-lint-php7.4
|
||||
- php-lint-php8.0
|
||||
- php-lint-php8.1
|
||||
- php-lint-php8.2
|
||||
script:
|
||||
- composer ci:php:rector
|
|
@ -1,6 +1,6 @@
|
|||
unit-php7.4-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||
image: ghcr.io/typo3/core-testing-php74:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php7.4-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||
image: ghcr.io/typo3/core-testing-php74:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.0-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||
image: ghcr.io/typo3/core-testing-php80:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.0-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||
image: ghcr.io/typo3/core-testing-php80:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.1-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.1-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.1-v12-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.1-v12-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||
image: ghcr.io/typo3/core-testing-php81:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.2-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.2-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.2-v12-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.2-v12-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||
image: ghcr.io/typo3/core-testing-php82:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.3-v11-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.3-v11-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.3-v12-highest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
unit-php8.3-v12-lowest:
|
||||
extends: .default
|
||||
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||
image: ghcr.io/typo3/core-testing-php83:latest
|
||||
stage: test
|
||||
needs:
|
||||
- build-composer-dependencies
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
# TYPO3 extension tea test runner based on docker.
|
||||
#
|
||||
|
||||
trap 'cleanUp;exit 2' SIGINT
|
||||
if [ "${CI}" != "true" ]; then
|
||||
trap 'echo "runTests.sh SIGINT signal emitted";cleanUp;exit 2' SIGINT
|
||||
fi
|
||||
|
||||
waitFor() {
|
||||
local HOST=${1}
|
||||
|
|
|
@ -44,7 +44,7 @@ continuous integration.
|
|||
|
||||
Introduction
|
||||
PHPVersionSupport
|
||||
TestingFramework
|
||||
ReleaseBranchingStrategy
|
||||
Environment
|
||||
DependencyManager
|
||||
Running
|
||||
|
|
65
Documentation/ReleaseBranchingStrategy.rst
Normal file
65
Documentation/ReleaseBranchingStrategy.rst
Normal file
|
@ -0,0 +1,65 @@
|
|||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _release-branching-strategy:
|
||||
|
||||
==============================
|
||||
Release and Branching Strategy
|
||||
==============================
|
||||
|
||||
When maintaining TYPO3 extensions, developers often need to support multiple
|
||||
TYPO3 Long-Term Support (LTS) versions simultaneously. This typically requires
|
||||
a clear release and branching strategy to manage development and maintenance
|
||||
across different TYPO3 versions.
|
||||
|
||||
There are two common strategies for managing branches when supporting multiple
|
||||
TYPO3 LTS versions.
|
||||
|
||||
.. contents:: Table of Contents:
|
||||
:backlinks: top
|
||||
:class: compact-list
|
||||
:depth: 2
|
||||
:local:
|
||||
|
||||
.. _release-branching-strategy-one-branch:
|
||||
|
||||
Approach 1: One branch for multiple TYPO3 LTS versions
|
||||
======================================================
|
||||
|
||||
In this approach, there is a single main branch that receives new features and
|
||||
updates, while supporting multiple TYPO3 LTS versions at the same time.
|
||||
|
||||
The downside of this approach is that it may require some version-dependent
|
||||
code switches, which can increase complexity. However, the major advantage is
|
||||
that there is only one branch to maintain, making it easier to implement new
|
||||
features and code changes across all supported TYPO3 versions.
|
||||
|
||||
This approach simplifies the maintenance of the extension and is preferred when
|
||||
minimizing maintenance overhead is the primary concern.
|
||||
|
||||
.. _release-branching-strategy-multiple-branches:
|
||||
|
||||
Approach 2: Separate branch per TYPO3 LTS version
|
||||
=================================================
|
||||
|
||||
In this approach, there is one main branch for each TYPO3 LTS version. This
|
||||
means that each branch exclusively supports a single TYPO3 LTS version.
|
||||
|
||||
The advantage here is that version-specific code can be used without requiring
|
||||
version-dependent switches, reducing complexity in the codebase. However, this
|
||||
approach increases the maintenance burden, as any new features or updates must
|
||||
be applied to each branch individually.
|
||||
|
||||
This approach may be necessary when there are significant differences between
|
||||
TYPO3 LTS versions or when you want to avoid version-dependent code.
|
||||
|
||||
.. _release-strategy-conclusion:
|
||||
|
||||
Conclusion
|
||||
==========
|
||||
|
||||
The appropriate release and branching strategy depends on the specific
|
||||
requirements of the extension and the TYPO3 versions you are supporting. If
|
||||
reducing maintenance complexity is a priority, using a single branch for
|
||||
multiple versions is often the better choice. However, if you need to tailor
|
||||
your extension for each version, a separate branch for each version may be more
|
||||
suitable.
|
|
@ -1,57 +0,0 @@
|
|||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _testing-framework:
|
||||
|
||||
=================
|
||||
Testing framework
|
||||
=================
|
||||
|
||||
Extensions usually need to support two LTS versions of TYPO3 in parallel,
|
||||
assuming that they should support all currently supported TYPO3 LTS versions.
|
||||
To achieve this, there are two different approaches, which also affect the
|
||||
choice of a testing framework for unit and functional tests.
|
||||
|
||||
.. contents:: Table of Contents:
|
||||
:backlinks: top
|
||||
:class: compact-list
|
||||
:depth: 2
|
||||
:local:
|
||||
|
||||
.. _testing-framework-approach-many-versions:
|
||||
|
||||
Approach 1: One branch for many TYPO3 LTS versions
|
||||
==================================================
|
||||
|
||||
With this approach, there is one main branch that gets new features. It needs to
|
||||
support two TYPO3 LTS versions in parallel.
|
||||
|
||||
The downside is that this slightly increases code complexity as
|
||||
version-dependent code switches might be necessary. The upside is that there
|
||||
is only one branch to maintain, which makes adding new features (and all other
|
||||
code changes) a lot less of a hassle.
|
||||
|
||||
The `Nimut testing framework <https://github.com/Nimut/testing-framework>`__
|
||||
can support multiple TYPO3 versions at a time, and
|
||||
it provides version-independent abstractions for testing, making it the perfect
|
||||
companion for this approach.
|
||||
|
||||
This is the approach that we have chosen for this extension as we do not want
|
||||
to maintain two branches in parallel.
|
||||
|
||||
.. _testing-framework-approach-one-version:
|
||||
|
||||
Approach 2: One branch per TYPO3 LTS version
|
||||
============================================
|
||||
|
||||
With this approach, there are two main branches that get new features in
|
||||
parallel. Each branch supports exactly one TYPO3 LTS version.
|
||||
|
||||
The upside is that this slightly decreases code complexity as
|
||||
version-dependent code switches are not necessary. The downside is that there
|
||||
are two branches to maintain, which makes adding new features (and all other
|
||||
code changes) more of a hassle.
|
||||
|
||||
For this approach, the
|
||||
`TYPO3 testing framework <https://github.com/TYPO3/testing-framework>`__
|
||||
- which supports only one TYPO3 LTS version at a time - will work just fine.
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
[![TYPO3 V11](https://img.shields.io/badge/TYPO3-11-orange.svg)](https://get.typo3.org/version/11)
|
||||
[![License](https://img.shields.io/github/license/TYPO3-Documentation/tea)](https://packagist.org/packages/ttn/tea)
|
||||
[![Total downloads](https://poser.pugx.org/ttn/tea/downloads.svg)](https://packagist.org/packages/ttn/tea)
|
||||
[![GitHub CI status](https://github.com/FriendsOfTYPO3/tea/workflows/CI/badge.svg?branch=main)](https://github.com/FriendsOfTYPO3/tea/actions)
|
||||
[![GitHub CI status](https://github.com/FriendsOfTYPO3/tea/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/FriendsOfTYPO3/tea/actions)
|
||||
[![GitLab CI status](https://gitlab.typo3.org/qa/example-extension/badges/main/pipeline.svg)](https://gitlab.typo3.org/qa/example-extension/-/pipelines)
|
||||
[![Coverage Status](https://coveralls.io/repos/github/TYPO3-Documentation/tea/badge.svg?branch=main)](https://coveralls.io/github/TYPO3-Documentation/tea?branch=main)
|
||||
|
||||
|
@ -26,7 +26,7 @@ You can also use this extension to manage your collection of delicious teas.
|
|||
We value and welcome feedback of all kinds, including discussions.
|
||||
Feedback can be sent via TYPO3 slack within [our channel](https://app.slack.com/client/T024TUMLZ/CSQ8T0VS5) or via direct massages to the team members.
|
||||
We also welcome email. All the contact information is available at our [typo3.org team page](https://typo3.org/community/teams/best-practices).
|
||||
Another way is to open an [issue on GitHub](https://github.com/FriendsOfTYPO3/tea/issues/new/choose).
|
||||
Another way is to create a [discussion on GitHub](https://github.com/FriendsOfTYPO3/tea/discussions).
|
||||
|
||||
## Philosophies
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ use TTN\Tea\Domain\Model\Tea;
|
|||
use TTN\Tea\Domain\Repository\TeaRepository;
|
||||
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
|
||||
use TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface;
|
||||
use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
|
||||
|
||||
/**
|
||||
|
@ -31,6 +32,14 @@ final class TeaRepositoryTest extends FunctionalTestCase
|
|||
$this->subject = $this->get(TeaRepository::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function isRepository(): void
|
||||
{
|
||||
self::assertInstanceOf(Repository::class, $this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
|
|
@ -22,6 +22,9 @@ use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
|
|||
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
|
||||
|
||||
/**
|
||||
* Note: Unit tests for controllers are not considered best practice anymore. Instead, functional tests should be used.
|
||||
* We're currently in the process of migrating all controller tests to functional tests.
|
||||
*
|
||||
* @covers \TTN\Tea\Controller\FrontEndEditorController
|
||||
*/
|
||||
final class FrontEndEditorControllerTest extends UnitTestCase
|
||||
|
|
|
@ -17,6 +17,9 @@ use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
|
|||
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
|
||||
|
||||
/**
|
||||
* Note: Unit tests for controllers are not considered best practice anymore. Instead, functional tests should be used.
|
||||
* We're currently in the process of migrating all controller tests to functional tests.
|
||||
*
|
||||
* @covers \TTN\Tea\Controller\TeaController
|
||||
*/
|
||||
final class TeaControllerTest extends UnitTestCase
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace TTN\Tea\Tests\Unit\Domain\Repository;
|
||||
|
||||
use TTN\Tea\Domain\Repository\TeaRepository;
|
||||
use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
|
||||
use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
|
||||
|
||||
/**
|
||||
* @covers \TTN\Tea\Domain\Repository\TeaRepository
|
||||
*/
|
||||
final class TeaRepositoryTest extends UnitTestCase
|
||||
{
|
||||
private TeaRepository $subject;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
if (\interface_exists(ObjectManagerInterface::class)) {
|
||||
$objectManagerStub = $this->createStub(ObjectManagerInterface::class);
|
||||
// @phpstan-ignore-next-line This line is 11LTS-specific, but we're running PHPStan on TYPO3 12.
|
||||
$this->subject = new TeaRepository($objectManagerStub);
|
||||
} else {
|
||||
$this->subject = new TeaRepository();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function isRepository(): void
|
||||
{
|
||||
self::assertInstanceOf(Repository::class, $this->subject);
|
||||
}
|
||||
}
|
|
@ -47,31 +47,31 @@
|
|||
"typo3/cms-frontend": "^11.5.4 || ^12.4.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"ergebnis/composer-normalize": "^2.43.0",
|
||||
"friendsofphp/php-cs-fixer": "^3.64.0",
|
||||
"helmich/typo3-typoscript-lint": "^3.1.1",
|
||||
"icanhazstring/composer-unused": "^0.8.11",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.4",
|
||||
"phpmd/phpmd": "^2.15.0",
|
||||
"phpstan/extension-installer": "^1.4.3",
|
||||
"phpstan/phpstan": "^1.12.3",
|
||||
"phpstan/phpstan-phpunit": "^1.4.0",
|
||||
"phpstan/phpstan-strict-rules": "^1.6.0",
|
||||
"phpunit/phpunit": "^9.6.20",
|
||||
"saschaegerer/phpstan-typo3": "^1.10.2",
|
||||
"seld/jsonlint": "^1.11.0",
|
||||
"spaze/phpstan-disallowed-calls": "^3.4",
|
||||
"squizlabs/php_codesniffer": "^3.10.2",
|
||||
"ssch/typo3-rector": "^2.6.5",
|
||||
"ssch/typo3-rector-testing-framework": "^2.0.1",
|
||||
"symfony/console": "^5.4 || ^6.4 || ^7.0",
|
||||
"symfony/translation": "^5.4 || ^6.4 || ^7.0",
|
||||
"symfony/yaml": "^5.4 || ^6.4 || ^7.0",
|
||||
"tomasvotruba/cognitive-complexity": "^0.2.3",
|
||||
"tomasvotruba/type-coverage": "^0.3.1",
|
||||
"ergebnis/composer-normalize": "2.44.0",
|
||||
"friendsofphp/php-cs-fixer": "3.64.0",
|
||||
"helmich/typo3-typoscript-lint": "3.1.1",
|
||||
"icanhazstring/composer-unused": "0.8.11",
|
||||
"php-parallel-lint/php-parallel-lint": "1.4.0",
|
||||
"phpmd/phpmd": "2.15.0",
|
||||
"phpstan/extension-installer": "1.4.3",
|
||||
"phpstan/phpstan": "1.12.7",
|
||||
"phpstan/phpstan-phpunit": "1.4.0",
|
||||
"phpstan/phpstan-strict-rules": "1.6.1",
|
||||
"phpunit/phpunit": "9.6.20",
|
||||
"saschaegerer/phpstan-typo3": "1.10.2",
|
||||
"seld/jsonlint": "1.11.0",
|
||||
"spaze/phpstan-disallowed-calls": "3.5.1",
|
||||
"squizlabs/php_codesniffer": "3.10.3",
|
||||
"ssch/typo3-rector": "2.11.0",
|
||||
"ssch/typo3-rector-testing-framework": "2.0.1",
|
||||
"symfony/console": "^5.4.44 || ^6.4.12 || ^7.1.5",
|
||||
"symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5",
|
||||
"symfony/yaml": "^5.4.44 || ^6.4.12 || ^7.1.5",
|
||||
"tomasvotruba/cognitive-complexity": "0.2.3",
|
||||
"tomasvotruba/type-coverage": "1.0.0",
|
||||
"typo3/cms-fluid-styled-content": "^11.5.4 || ^12.4.2",
|
||||
"typo3/coding-standards": "^0.6.1 || ^0.8.0",
|
||||
"typo3/testing-framework": "^7.1.0",
|
||||
"typo3/coding-standards": "0.6.1 || 0.8.0",
|
||||
"typo3/testing-framework": "7.1.0",
|
||||
"webmozart/assert": "^1.11.0"
|
||||
},
|
||||
"replace": {
|
||||
|
@ -147,16 +147,18 @@
|
|||
"ci:php:cs-fixer": "php-cs-fixer fix --config .php-cs-fixer.php -v --dry-run --diff",
|
||||
"ci:php:lint": "parallel-lint .*.php *.php Classes Configuration Tests",
|
||||
"ci:php:mess": "phpmd Classes text Build/phpmd/phpmd.xml",
|
||||
"ci:php:rector": "rector --dry-run",
|
||||
"ci:php:sniff": "phpcs --standard=Build/phpcs/phpcs.xml Classes Configuration Tests",
|
||||
"ci:php:stan": "phpstan --no-progress -v",
|
||||
"ci:static": [
|
||||
"@ci:composer:normalize",
|
||||
"@ci:composer:unused",
|
||||
"@ci:json:lint",
|
||||
"@ci:php:cs-fixer",
|
||||
"@ci:php:lint",
|
||||
"@ci:php:sniff",
|
||||
"@ci:php:rector",
|
||||
"@ci:php:stan",
|
||||
"@ci:php:cs-fixer",
|
||||
"@ci:php:sniff",
|
||||
"@ci:typoscript:lint",
|
||||
"@ci:xliff:lint",
|
||||
"@ci:yaml:lint"
|
||||
|
@ -174,10 +176,12 @@
|
|||
"docs:generate": "docker run --rm --pull always -v $(pwd):/project -it ghcr.io/typo3-documentation/render-guides:latest --config=Documentation",
|
||||
"fix:composer:normalize": "@composer normalize --no-check-lock",
|
||||
"fix:php": [
|
||||
"@fix:php:rector",
|
||||
"@fix:php:cs",
|
||||
"@fix:php:sniff"
|
||||
],
|
||||
"fix:php:cs": "php-cs-fixer fix --config .php-cs-fixer.php",
|
||||
"fix:php:rector": "rector",
|
||||
"fix:php:sniff": "phpcbf --standard=Build/phpcs/phpcs.xml Classes Configuration Tests",
|
||||
"phpstan:baseline": "phpstan --generate-baseline --allow-empty-baseline",
|
||||
"prepare-release": [
|
||||
|
@ -218,6 +222,7 @@
|
|||
"ci:php:cs-fixer": "Checks the code style with the PHP Coding Standards Fixer (PHP-CS-Fixer).",
|
||||
"ci:php:lint": "Lints the PHP files for syntax errors.",
|
||||
"ci:php:mess": "Runs PHP mess detection.",
|
||||
"ci:php:rector": "Checks for code for changes by Rector.",
|
||||
"ci:php:sniff": "Checks the code style with PHP_CodeSniffer (PHPCS).",
|
||||
"ci:php:stan": "Checks the PHP types using PHPStan.",
|
||||
"ci:static": "Runs all static code checks (syntax, style, types).",
|
||||
|
@ -232,6 +237,7 @@
|
|||
"fix:composer:normalize": "Normalizes composer.json file content.",
|
||||
"fix:php": "Runs all fixers for the PHP code.",
|
||||
"fix:php:cs": "Fixes the code style with PHP-CS-Fixer.",
|
||||
"fix:php:rector": "Updates the code with Rector.",
|
||||
"fix:php:sniff": "Fixes the code style with PHP_CodeSniffer.",
|
||||
"phpstan:baseline": "Updates the PHPStan baseline file to match the code.",
|
||||
"prepare-release": "Removes development-only files in preparation of a TER release."
|
||||
|
|
Loading…
Reference in a new issue