Skip to content

Commit a87cee9

Browse files
committed
refactor: migrate to PHP 8.4 and Symfony 6.4
1 parent cdcd2cb commit a87cee9

34 files changed

+3655
-2472
lines changed

.github/workflows/automatic-rebase.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: Pull Request
3+
4+
on: pull_request
5+
6+
concurrency:
7+
group: ${{ github.workflow }}-${{ github.ref }}
8+
cancel-in-progress: true
9+
10+
jobs:
11+
php-cs-fixer:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v5
15+
- run: make start
16+
- run: docker compose run --rm --build --no-deps php vendor/bin/php-cs-fixer fix --diff --dry-run
17+
container-deprecations:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v5
21+
- run: make start
22+
- run: |
23+
OUTPUT=$(docker compose run --rm --build --no-deps php bin/console debug:container --deprecations)
24+
25+
echo "$OUTPUT"
26+
27+
if [[ "$OUTPUT" == *"[OK]"* ]]; then
28+
exit 0
29+
else
30+
exit 1
31+
fi

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,9 @@
1919
###< phpunit/phpunit ###
2020

2121
.env
22-
docker compose.override.yml
22+
compose.override.yml
23+
24+
###> friendsofphp/php-cs-fixer ###
25+
/.php-cs-fixer.php
26+
/.php-cs-fixer.cache
27+
###< friendsofphp/php-cs-fixer ###

.php-cs-fixer.dist.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
$finder = new PhpCsFixer\Finder()
4+
->in(__DIR__)
5+
->exclude('var')
6+
;
7+
8+
return new PhpCsFixer\Config()
9+
->setRules([
10+
'@PhpCsFixer:risky' => true,
11+
'@PHP84Migration' => true,
12+
])
13+
->setRiskyAllowed(true)
14+
->setFinder($finder)
15+
->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
16+
->setUsingCache(false)
17+
;

Dockerfile

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
FROM composer:2.5.8 as composer
1+
FROM composer:2 AS composer
22

33
##################################
44

5-
FROM php:8.3.6-fpm-alpine3.19
5+
FROM php:8.4-fpm-alpine
66

77
COPY --from=composer /usr/bin/composer /usr/bin/composer
88

9-
RUN apk add --no-cache \
10-
bash==5.2.21-r0 \
11-
git==2.43.6-r0 \
12-
icu-dev==74.1-r0
9+
WORKDIR /usr/src/app
1310

14-
RUN mkdir -p /usr/src/app \
15-
&& addgroup docker \
16-
&& adduser -S -h /home/docker -u ${USER_ID:-1000} -G docker docker \
11+
RUN addgroup docker \
12+
&& adduser -S -h /home/docker -u 1000 -G docker docker \
1713
&& chown -R docker /home/docker /usr/src/app \
1814
&& apk add --no-cache --virtual=.build-deps \
19-
autoconf==2.71-r2 \
20-
g++==13.2.1_git20231014-r0 \
21-
make==4.4.1-r2 \
22-
&& docker-php-ext-configure intl \
23-
&& docker-php-ext-install -j"$(nproc)" intl pdo_mysql \
24-
&& pecl install apcu \
25-
&& docker-php-ext-enable apcu intl \
15+
$PHPIZE_DEPS \
16+
&& apk add --no-cache \
17+
bash \
18+
git \
19+
icu-dev \
20+
&& docker-php-ext-configure \
21+
intl \
22+
&& docker-php-ext-install -j"$(nproc)" \
23+
intl \
24+
pdo_mysql \
25+
&& pecl install \
26+
apcu \
27+
&& docker-php-ext-enable \
28+
apcu \
29+
intl \
2630
&& apk del .build-deps
2731

28-
WORKDIR /usr/src/app
29-
30-
COPY composer.json /usr/src/app/composer.json
31-
COPY composer.lock /usr/src/app/composer.lock
32+
COPY composer.* /usr/src/app/
3233

3334
RUN composer install --no-scripts
3435

35-
COPY . /usr/src/app
36+
COPY --chown=docker:docker . /usr/src/app
3637

37-
RUN chown -R 1000:1000 /usr/src/app
38-
USER 1000:1000
38+
USER docker

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
UID := $(shell id -u)
2+
13
.PHONY: start
24
start: cp-env build install-deps
35
docker compose up -d
@@ -12,23 +14,23 @@ build:
1214

1315
.PHONY: install-deps
1416
install-deps:
15-
docker compose run --rm php composer install
17+
docker compose run --rm --user=$(UID) php composer install
1618

1719
.PHONY: database-migrate
1820
database-migrate:
19-
docker compose run --rm php bin/console doctrine:migrations:migrate
21+
docker compose run --rm --user=$(UID) php bin/console doctrine:migrations:migrate
2022

2123
.PHONY: database-create
2224
database-create:
23-
docker compose run --rm php bin/console doctrine:database:create --if-not-exists
25+
docker compose run --rm --user=$(UID) php bin/console doctrine:database:create --if-not-exists
2426

2527
.PHONY: database-drop
2628
database-drop:
27-
docker compose run --rm php bin/console doctrine:database:drop --if-exists --force
29+
docker compose run --rm --user=$(UID) php bin/console doctrine:database:drop --if-exists --force
2830

2931
.PHONY: fixtures-load
3032
fixtures-load:
31-
docker compose run --rm php bin/console doctrine:fixtures:load
33+
docker compose run --rm --user=$(UID) php bin/console doctrine:fixtures:load
3234

3335
.PHONY: reset-db
3436
reset-db: database-drop database-create database-migrate fixtures-load

compose.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
services:
3+
php:
4+
platform: linux/x86_64
5+
build:
6+
context: .
7+
dockerfile: Dockerfile
8+
env_file: .env
9+
volumes:
10+
- .:/usr/src/app:rw
11+
restart: unless-stopped
12+
13+
nginx:
14+
platform: linux/x86_64
15+
image: nginx:alpine
16+
ports:
17+
- 80:80
18+
volumes:
19+
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
20+
- ./public:/usr/src/app/public:ro
21+
restart: unless-stopped
22+
23+
phpmyadmin:
24+
platform: linux/x86_64
25+
image: phpmyadmin
26+
environment:
27+
PMA_ARBITRARY: 1
28+
ports:
29+
- 8080:80
30+
restart: unless-stopped
31+
32+
database:
33+
platform: linux/x86_64
34+
image: mysql:8.4
35+
environment:
36+
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
37+
MYSQL_DATABASE: ${MYSQL_DATABASE}
38+
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
39+
MYSQL_USER: ${MYSQL_USER}
40+
volumes:
41+
- db_data:/var/lib/mysql:rw
42+
restart: unless-stopped
43+
44+
volumes:
45+
db_data: ~

composer.json

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,53 @@
44
"minimum-stability": "stable",
55
"prefer-stable": true,
66
"require": {
7-
"php": ">=8.3.6",
7+
"php": "*",
88
"ext-ctype": "*",
99
"ext-iconv": "*",
10-
"composer/package-versions-deprecated": "1.11.99.5",
11-
"doctrine/doctrine-bundle": "^2.13.2",
12-
"doctrine/doctrine-migrations-bundle": "^3.4.1",
13-
"doctrine/orm": "^3.3.2",
14-
"phpdocumentor/reflection-docblock": "^5.6.1",
15-
"symfony/asset": "^7.2.0",
16-
"symfony/console": "^7.2.1",
17-
"symfony/dotenv": "^7.2.0",
18-
"symfony/expression-language": "^7.2.0",
19-
"symfony/flex": "^2.5.0",
20-
"symfony/form": "^7.2.4",
21-
"symfony/framework-bundle": "^7.2.4",
22-
"symfony/http-client": "^7.2.4",
23-
"symfony/intl": "^7.2.0",
24-
"symfony/mailer": "^7.2.3",
25-
"symfony/mime": "^7.0",
26-
"symfony/monolog-bundle": "^3.10.0",
27-
"symfony/notifier": "^7.2.0",
28-
"symfony/process": "^7.2.4",
29-
"symfony/property-access": "^7.2.3",
30-
"symfony/property-info": "^7.2.3",
31-
"symfony/proxy-manager-bridge": "^6.4.13",
32-
"symfony/runtime": "^7.2.3",
33-
"symfony/security-bundle": "^7.2.3",
34-
"symfony/serializer": "^7.2.4",
35-
"symfony/string": "^7.2.0",
36-
"symfony/translation": "^7.2.4",
37-
"symfony/twig-bundle": "^7.2.0",
38-
"symfony/validator": "^7.2.4",
39-
"symfony/web-link": "^7.2.0",
40-
"symfony/yaml": "^7.2.3",
41-
"twig/extra-bundle": "^3.20.0",
42-
"twig/twig": "^3.20.0"
10+
"doctrine/doctrine-bundle": "^2.16",
11+
"doctrine/doctrine-migrations-bundle": "^3.4",
12+
"doctrine/orm": "^3.5",
13+
"phpdocumentor/reflection-docblock": "^5.6",
14+
"symfony/asset": "^6.4",
15+
"symfony/console": "^6.4",
16+
"symfony/dotenv": "^6.4",
17+
"symfony/expression-language": "^6.4",
18+
"symfony/flex": "^2.8",
19+
"symfony/form": "^6.4",
20+
"symfony/framework-bundle": "^6.4",
21+
"symfony/http-client": "^6.4",
22+
"symfony/intl": "^6.4",
23+
"symfony/mailer": "^6.4",
24+
"symfony/mime": "^6.4",
25+
"symfony/monolog-bundle": "^3.10",
26+
"symfony/notifier": "^6.4",
27+
"symfony/process": "^6.4",
28+
"symfony/property-access": "^6.4",
29+
"symfony/property-info": "^6.4",
30+
"symfony/proxy-manager-bridge": "^6.4",
31+
"symfony/runtime": "^6.4",
32+
"symfony/security-bundle": "^6.4",
33+
"symfony/serializer": "^6.4",
34+
"symfony/string": "^6.4",
35+
"symfony/translation": "^6.4",
36+
"symfony/twig-bundle": "^6.4",
37+
"symfony/validator": "^6.4",
38+
"symfony/web-link": "^6.4",
39+
"symfony/yaml": "^6.4",
40+
"twig/extra-bundle": "^3.21",
41+
"twig/twig": "^3.21"
4342
},
4443
"require-dev": {
45-
"doctrine/doctrine-fixtures-bundle": "^4.0.0",
46-
"phpunit/phpunit": "^12.0.7",
47-
"symfony/browser-kit": "^7.2.4",
48-
"symfony/css-selector": "^7.2.0",
49-
"symfony/debug-bundle": "^7.2.0",
50-
"symfony/maker-bundle": "^1.62.1",
51-
"symfony/phpunit-bridge": "^7.2.0",
52-
"symfony/stopwatch": "^7.2.4",
53-
"symfony/web-profiler-bundle": "^7.2.4"
44+
"doctrine/doctrine-fixtures-bundle": "^4.0",
45+
"friendsofphp/php-cs-fixer": "^3.87",
46+
"phpunit/phpunit": "^12.0",
47+
"symfony/browser-kit": "^6.4",
48+
"symfony/css-selector": "^6.4",
49+
"symfony/debug-bundle": "^6.4",
50+
"symfony/maker-bundle": "^1.62",
51+
"symfony/phpunit-bridge": "^6.4",
52+
"symfony/stopwatch": "^6.4",
53+
"symfony/web-profiler-bundle": "^6.4"
5454
},
5555
"config": {
5656
"allow-plugins": {
@@ -75,7 +75,9 @@
7575
"replace": {
7676
"symfony/polyfill-ctype": "*",
7777
"symfony/polyfill-iconv": "*",
78-
"symfony/polyfill-php72": "*"
78+
"symfony/polyfill-php72": "*",
79+
"symfony/polyfill-php83": "*",
80+
"symfony/polyfill-php84": "*"
7981
},
8082
"scripts": {
8183
"auto-scripts": {
@@ -95,7 +97,7 @@
9597
"extra": {
9698
"symfony": {
9799
"allow-contrib": false,
98-
"require": "^7.0"
100+
"require": "^6.4"
99101
}
100102
}
101103
}

0 commit comments

Comments
 (0)