From 96a2715158252c5bc24bf5f75dab4c523980e0c0 Mon Sep 17 00:00:00 2001
From: Anton Komarev <1849174+antonkomarev@users.noreply.github.com>
Date: Sat, 9 Mar 2024 20:32:03 +0300
Subject: [PATCH] Add Laravel 11 support (#32)
---
.docker/nginx/app.laravel-ownership.80.conf | 40 ----------
.docker/php/{ => php81}/Dockerfile | 5 +-
.docker/php/php82/Dockerfile | 22 ++++++
.docker/php/php83/Dockerfile | 22 ++++++
.docker/php/www.conf | 85 ---------------------
.github/workflows/tests.yml | 21 +++--
CHANGELOG.md | 10 ++-
composer.json | 10 +--
docker-compose.yaml | 49 ++++++------
phpunit.xml.dist | 3 +-
10 files changed, 103 insertions(+), 164 deletions(-)
delete mode 100644 .docker/nginx/app.laravel-ownership.80.conf
rename .docker/php/{ => php81}/Dockerfile (80%)
create mode 100644 .docker/php/php82/Dockerfile
create mode 100644 .docker/php/php83/Dockerfile
delete mode 100644 .docker/php/www.conf
diff --git a/.docker/nginx/app.laravel-ownership.80.conf b/.docker/nginx/app.laravel-ownership.80.conf
deleted file mode 100644
index af9edea..0000000
--- a/.docker/nginx/app.laravel-ownership.80.conf
+++ /dev/null
@@ -1,40 +0,0 @@
-server {
- listen 80;
- listen [::]:80;
- server_name app.laravel-ownership.localhost;
-
- root /app/public;
- index index.php index.html;
- access_log /dev/stdout;
- error_log /dev/stderr info;
-
- charset utf-8;
-
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Host $server_name;
-
- add_header Strict-Transport-Security "max-age=31536000" always;
- add_header X-Frame-Options "SAMEORIGIN" always;
- add_header X-Content-Type-Options "nosniff" always;
- add_header Referrer-Policy "strict-origin-when-cross-origin" always;
-
- server_tokens off;
- client_max_body_size 100M;
-
- location ~ \.php$ {
- try_files $uri =404;
- fastcgi_split_path_info ^(.+\.php)(/.+)$;
- fastcgi_pass app:9000;
- fastcgi_index index.php;
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param PATH_INFO $fastcgi_path_info;
- }
-
- location / {
- try_files $uri $uri/ /index.php?$query_string;
- gzip_static on;
- }
-}
diff --git a/.docker/php/Dockerfile b/.docker/php/php81/Dockerfile
similarity index 80%
rename from .docker/php/Dockerfile
rename to .docker/php/php81/Dockerfile
index fa9f794..886291b 100644
--- a/.docker/php/Dockerfile
+++ b/.docker/php/php81/Dockerfile
@@ -1,7 +1,10 @@
# ----------------------
# The FPM base container
# ----------------------
-FROM php:8.1-fpm-alpine AS dev
+FROM php:8.1-cli-alpine AS dev
+
+RUN apk add --no-cache --virtual .build-deps \
+ $PHPIZE_DEPS
# Cleanup apk cache and temp files
RUN rm -rf /var/cache/apk/* /tmp/*
diff --git a/.docker/php/php82/Dockerfile b/.docker/php/php82/Dockerfile
new file mode 100644
index 0000000..1067d5c
--- /dev/null
+++ b/.docker/php/php82/Dockerfile
@@ -0,0 +1,22 @@
+# ----------------------
+# The FPM base container
+# ----------------------
+FROM php:8.2-cli-alpine AS dev
+
+RUN apk add --no-cache --virtual .build-deps \
+ $PHPIZE_DEPS
+
+# Cleanup apk cache and temp files
+RUN rm -rf /var/cache/apk/* /tmp/*
+
+# ----------------------
+# Composer install step
+# ----------------------
+
+# Get latest Composer
+COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
+
+# ----------------------
+# The FPM production container
+# ----------------------
+FROM dev
diff --git a/.docker/php/php83/Dockerfile b/.docker/php/php83/Dockerfile
new file mode 100644
index 0000000..4d8d02e
--- /dev/null
+++ b/.docker/php/php83/Dockerfile
@@ -0,0 +1,22 @@
+# ----------------------
+# The FPM base container
+# ----------------------
+FROM php:8.3-cli-alpine AS dev
+
+RUN apk add --no-cache --virtual .build-deps \
+ $PHPIZE_DEPS
+
+# Cleanup apk cache and temp files
+RUN rm -rf /var/cache/apk/* /tmp/*
+
+# ----------------------
+# Composer install step
+# ----------------------
+
+# Get latest Composer
+COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
+
+# ----------------------
+# The FPM production container
+# ----------------------
+FROM dev
diff --git a/.docker/php/www.conf b/.docker/php/www.conf
deleted file mode 100644
index 39bef0c..0000000
--- a/.docker/php/www.conf
+++ /dev/null
@@ -1,85 +0,0 @@
-; Start a new pool named 'www'.
-; the variable $pool can be used in any directive and will be replaced by the
-; pool name ('www' here)
-[www]
-
-; Unix user/group of processes
-; Note: The user is mandatory. If the group is not set, the default user's group
-; will be used.
-user = www-data
-group = www-data
-
-; The address on which to accept FastCGI requests.
-; Valid syntaxes are:
-; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
-; a specific port;
-; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
-; a specific port;
-; 'port' - to listen on a TCP socket to all addresses
-; (IPv6 and IPv4-mapped) on a specific port;
-; '/path/to/unix/socket' - to listen on a unix socket.
-; Note: This value is mandatory.
-listen = 9000
-
-; Choose how the process manager will control the number of child processes.
-; Possible Values:
-; static - a fixed number (pm.max_children) of child processes;
-; dynamic - the number of child processes are set dynamically based on the
-; following directives. With this process management, there will be
-; always at least 1 children.
-; pm.max_children - the maximum number of children that can
-; be alive at the same time.
-; pm.start_servers - the number of children created on startup.
-; pm.min_spare_servers - the minimum number of children in 'idle'
-; state (waiting to process). If the number
-; of 'idle' processes is less than this
-; number then some children will be created.
-; pm.max_spare_servers - the maximum number of children in 'idle'
-; state (waiting to process). If the number
-; of 'idle' processes is greater than this
-; number then some children will be killed.
-; ondemand - no children are created at startup. Children will be forked when
-; new requests will connect. The following parameter are used:
-; pm.max_children - the maximum number of children that
-; can be alive at the same time.
-; pm.process_idle_timeout - The number of seconds after which
-; an idle process will be killed.
-; Note: This value is mandatory.
-pm = dynamic
-
-; The number of child processes to be created when pm is set to 'static' and the
-; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
-; This value sets the limit on the number of simultaneous requests that will be
-; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
-; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
-; CGI. The below defaults are based on a server without much resources. Don't
-; forget to tweak pm.* to fit your needs.
-; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
-; Note: This value is mandatory.
-pm.max_children = 5
-
-; The number of child processes created on startup.
-; Note: Used only when pm is set to 'dynamic'
-; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
-pm.start_servers = 2
-
-; The desired minimum number of idle server processes.
-; Note: Used only when pm is set to 'dynamic'
-; Note: Mandatory when pm is set to 'dynamic'
-pm.min_spare_servers = 1
-
-; The desired maximum number of idle server processes.
-; Note: Used only when pm is set to 'dynamic'
-; Note: Mandatory when pm is set to 'dynamic'
-pm.max_spare_servers = 3
-
-; The number of seconds after which an idle process will be killed.
-; Note: Used only when pm is set to 'ondemand'
-; Default Value: 10s
-;pm.process_idle_timeout = 10s;
-
-; The number of requests each child process should execute before respawning.
-; This can be useful to work around memory leaks in 3rd party libraries. For
-; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
-; Default Value: 0
-;pm.max_requests = 500
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 47b8eb1..a002540 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -1,27 +1,38 @@
name: tests
-on: [ push, pull_request ]
+on:
+ - push
+ - pull_request
jobs:
test:
runs-on: ${{ matrix.os }}
+
strategy:
fail-fast: true
matrix:
- os: [ ubuntu-latest ]
- php: [ 8.0, 8.1, 8.2 ]
- laravel: [ 9.*, 10.* ]
- dependency-version: [ prefer-lowest, prefer-stable ]
+ os: [ubuntu-latest]
+ php: [8.0, 8.1, 8.2, 8.3]
+ laravel: ['9.*', '10.*', '11.*']
+ dependency-version: [prefer-lowest, prefer-stable]
exclude:
- laravel: 9.*
php: 8.2
+ - laravel: 9.*
+ php: 8.3
- laravel: 10.*
php: 8.0
+ - laravel: 11.*
+ php: 8.0
+ - laravel: 11.*
+ php: 8.1
include:
- laravel: 9.*
testbench: 7.*
- laravel: 10.*
testbench: 8.*
+ - laravel: 11.*
+ testbench: 9.*
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8e4cb87..88bd11b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@ All notable changes to `cybercog/laravel-ownership` will be documented in this f
## [Unreleased]
+## [5.6.0] - 2024-03-09
+
+### Added
+
+- ([#32]) Added Laravel 11 support
+
## [5.5.0] - 2023-02-24
### Added
@@ -129,7 +135,8 @@ All notable changes to `cybercog/laravel-ownership` will be documented in this f
- Initial release
-[Unreleased]: https://github.com/cybercog/laravel-ownership/compare/5.5.0...master
+[Unreleased]: https://github.com/cybercog/laravel-ownership/compare/5.6.0...master
+[5.6.0]: https://github.com/cybercog/laravel-ownership/compare/5.4.0...5.6.0
[5.5.0]: https://github.com/cybercog/laravel-ownership/compare/5.4.0...5.5.0
[5.4.0]: https://github.com/cybercog/laravel-ownership/compare/5.3.0...5.4.0
[5.3.0]: https://github.com/cybercog/laravel-ownership/compare/5.2.0...5.3.0
@@ -144,6 +151,7 @@ All notable changes to `cybercog/laravel-ownership` will be documented in this f
[2.0.0]: https://github.com/cybercog/laravel-ownership/compare/1.0.0...2.0.0
[Upgrade instructions]: UPGRADING.md
+[#32]: https://github.com/cybercog/laravel-ownership/pull/32
[#28]: https://github.com/cybercog/laravel-ownership/pull/28
[#27]: https://github.com/cybercog/laravel-ownership/pull/27
[#25]: https://github.com/cybercog/laravel-ownership/pull/25
diff --git a/composer.json b/composer.json
index a22a9fd..24b23b8 100644
--- a/composer.json
+++ b/composer.json
@@ -41,13 +41,13 @@
},
"require": {
"php": "^8.0",
- "illuminate/database": "^9.0|^10.0",
- "illuminate/support": "^9.0|^10.0"
+ "illuminate/database": "^9.0|^10.0|^11.0",
+ "illuminate/support": "^9.0|^10.0|^11.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
- "orchestra/testbench": "^7.0|^8.0",
- "phpunit/phpunit": "^9.6"
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.6|^10.5"
},
"autoload": {
"psr-4": {
@@ -75,5 +75,5 @@
}
},
"minimum-stability": "dev",
- "prefer-stable" : true
+ "prefer-stable": true
}
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 4e8f438..4c8ab8a 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,35 +1,34 @@
version: "3.9"
services:
- app:
- container_name: laravel-ownership-app
- image: laravel-ownership-app
+ php81:
+ container_name: laravel-ownership-lib-81
+ image: laravel-ownership-lib-81
build:
context: ./
- dockerfile: ./.docker/php/Dockerfile
- restart: unless-stopped
+ dockerfile: ./.docker/php/php81/Dockerfile
+ tty: true
working_dir: /app
volumes:
- ./:/app
- - ./.docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
- networks:
- - laravel-ownership
- nginx:
- container_name: laravel-ownership-nginx
- image: nginx:1.21-alpine
- restart: unless-stopped
- depends_on:
- - app
- ports:
- - "80:80"
- environment:
- VIRTUAL_HOST: app.laravel-ownership.localhost
+ php82:
+ container_name: laravel-ownership-lib-82
+ image: laravel-ownership-lib-82
+ build:
+ context: ./
+ dockerfile: ./.docker/php/php82/Dockerfile
+ tty: true
+ working_dir: /app
volumes:
- - ./.docker/nginx/app.laravel-ownership.80.conf:/etc/nginx/conf.d/app.laravel-ownership.80.conf:ro
- - ./public:/app/public:ro
- networks:
- - laravel-ownership
+ - ./:/app
-networks:
- laravel-ownership:
- driver: bridge
+ php83:
+ container_name: laravel-ownership-lib-83
+ image: laravel-ownership-lib-83
+ build:
+ context: ./
+ dockerfile: ./.docker/php/php83/Dockerfile
+ tty: true
+ working_dir: /app
+ volumes:
+ - ./:/app
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index ab4f777..2e5bd0e 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -12,8 +12,7 @@
>
- tests/
- tests/database/factories/
+ tests/Unit/