From f80ef551d26cb2689d61725d14e0beb7e741484f Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:05:40 +0200 Subject: [PATCH 1/7] Add Laravel 13 support, drop Laravel 11 --- composer.json | 10 +++++----- matrix.json | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 720c56d..816707b 100644 --- a/composer.json +++ b/composer.json @@ -30,24 +30,24 @@ }, "require": { "ext-json": "*", - "laravel/framework": "^11.0|^12.0", + "laravel/framework": "^12.0|^13.0", "doctrine/dbal": "^4.0" }, "require-dev": { "mockery/mockery": "^1.2", - "orchestra/testbench": "^9.0|^10.0", + "orchestra/testbench": "^10.0|^11.0", "nunomaduro/collision": "^8.0", "laravel/pint": "^1.14" }, "minimum-stability": "dev", "prefer-stable": true, "scripts": { - "l11": [ - "composer update laravel/framework:11.* orchestra/testbench:9.* nunomaduro/collision:8.* --with-all-dependencies" - ], "l12": [ "composer update laravel/framework:12.* orchestra/testbench:10.* nunomaduro/collision:8.* --with-all-dependencies" ], + "l13": [ + "composer update laravel/framework:13.* orchestra/testbench:11.* nunomaduro/collision:8.* --with-all-dependencies" + ], "test": [ "testbench workbench:create-sqlite-db", "testbench package:test" diff --git a/matrix.json b/matrix.json index 20979ec..29aa3ee 100644 --- a/matrix.json +++ b/matrix.json @@ -1,10 +1,10 @@ { "db": ["mysql", "sqlite", "pgsql"], "payload": [ - { "laravel": "11.*", "php": "8.3", "testbench": "9.*", "collision": "8.*" }, - { "laravel": "11.*", "php": "8.2", "testbench": "9.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.2", "testbench": "10.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.3", "testbench": "10.*", "collision": "8.*" }, - { "laravel": "12.*", "php": "8.4", "testbench": "10.*", "collision": "8.*" } + { "laravel": "12.*", "php": "8.4", "testbench": "10.*", "collision": "8.*" }, + { "laravel": "13.*", "php": "8.3", "testbench": "11.*", "collision": "8.*" }, + { "laravel": "13.*", "php": "8.4", "testbench": "11.*", "collision": "8.*" } ] } \ No newline at end of file From 0534830fb4cbcb895c139a6a8b50a0ff06d401fc Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:07:10 +0200 Subject: [PATCH 2/7] Add PHP 8.5 to Laravel 12 and 13 matrix --- matrix.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/matrix.json b/matrix.json index 29aa3ee..39d38e7 100644 --- a/matrix.json +++ b/matrix.json @@ -4,7 +4,9 @@ { "laravel": "12.*", "php": "8.2", "testbench": "10.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.3", "testbench": "10.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.4", "testbench": "10.*", "collision": "8.*" }, + { "laravel": "12.*", "php": "8.5", "testbench": "10.*", "collision": "8.*" }, { "laravel": "13.*", "php": "8.3", "testbench": "11.*", "collision": "8.*" }, - { "laravel": "13.*", "php": "8.4", "testbench": "11.*", "collision": "8.*" } + { "laravel": "13.*", "php": "8.4", "testbench": "11.*", "collision": "8.*" }, + { "laravel": "13.*", "php": "8.5", "testbench": "11.*", "collision": "8.*" } ] } \ No newline at end of file From 72ae739fcb61990e11967325ac15dcd83e0509cc Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:10:28 +0200 Subject: [PATCH 3/7] Bump MySQL to 8.4 and PostgreSQL to 16 --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f8d1d06..8f2ff62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: volumes: - .:/var/www/html mysql: - image: mysql:8 + image: mysql:8.4 ports: - '${MYSQL_PORT:-3307}:3306' environment: @@ -13,7 +13,7 @@ services: MYSQL_DATABASE: 'test' MYSQL_RANDOM_ROOT_PASSWORD: true pgsql: - image: postgres:14 + image: postgres:16 ports: - '${POSTGRES_PORT:-5432}:5432' environment: From 7cd754f639ad587ccabcdecb36fab49cd668512f Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:12:18 +0200 Subject: [PATCH 4/7] Add version numbers to db matrix labels --- .github/workflows/run-tests.yml | 10 +++++----- matrix.json | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 3f5793a..1e1ab10 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -82,7 +82,7 @@ jobs: db: ${{ fromJson(needs.load-matrix.outputs.db) }} payload: ${{ fromJson(needs.load-matrix.outputs.payload) }} - name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db }} + name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db.version != '' && format('{0} {1}', matrix.db.driver, matrix.db.version) || matrix.db.driver }} steps: - name: Checkout code @@ -99,15 +99,15 @@ jobs: - name: Set up MySQL and PostgreSQL run: | - if [ "${{ matrix.db }}" != "sqlite" ]; then - MYSQL_PORT=3307 POSTGRES_PORT=5432 docker compose up ${{ matrix.db }} -d + if [ "${{ matrix.db.driver }}" != "sqlite" ]; then + MYSQL_PORT=3307 POSTGRES_PORT=5432 docker compose up ${{ matrix.db.driver }} -d fi - name: Install dependencies run: | composer require "laravel/framework:${{ matrix.payload.laravel }}" "orchestra/testbench:${{ matrix.payload.testbench }}" "nunomaduro/collision:${{ matrix.payload.collision }}" --no-interaction --no-update composer update --prefer-stable --prefer-dist --no-interaction - if [ "${{ matrix.db }}" = "mysql" ]; then + if [ "${{ matrix.db.driver }}" = "mysql" ]; then while ! mysqladmin ping --host=127.0.0.1 --user=test --port=3307 --password=test --silent; do echo "Waiting for MySQL..." sleep 1 @@ -117,5 +117,5 @@ jobs: fi - name: Execute tests env: - DB_DRIVER: ${{ matrix.db }} + DB_DRIVER: ${{ matrix.db.driver }} run: composer test diff --git a/matrix.json b/matrix.json index 39d38e7..d6fba05 100644 --- a/matrix.json +++ b/matrix.json @@ -1,5 +1,9 @@ { - "db": ["mysql", "sqlite", "pgsql"], + "db": [ + { "driver": "mysql", "version": "8.4" }, + { "driver": "sqlite" }, + { "driver": "pgsql", "version": "16" } + ], "payload": [ { "laravel": "12.*", "php": "8.2", "testbench": "10.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.3", "testbench": "10.*", "collision": "8.*" }, From 169382ae1574c417c25a3ca32794d875ea633e5d Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:16:25 +0200 Subject: [PATCH 5/7] Fix template validation error by inlining DB_DRIVER env var --- .github/workflows/run-tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 1e1ab10..4021211 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -116,6 +116,4 @@ jobs: echo "Not waiting for MySQL." fi - name: Execute tests - env: - DB_DRIVER: ${{ matrix.db.driver }} - run: composer test + run: DB_DRIVER=${{ matrix.db.driver }} composer test From a246718441d282b2aa774c190db8b76df38e6f4b Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:22:08 +0200 Subject: [PATCH 6/7] Simplify db matrix label to avoid template validation issues --- .github/workflows/run-tests.yml | 2 +- matrix.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 4021211..ce13cc5 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -82,7 +82,7 @@ jobs: db: ${{ fromJson(needs.load-matrix.outputs.db) }} payload: ${{ fromJson(needs.load-matrix.outputs.payload) }} - name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db.version != '' && format('{0} {1}', matrix.db.driver, matrix.db.version) || matrix.db.driver }} + name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db.label }} steps: - name: Checkout code diff --git a/matrix.json b/matrix.json index d6fba05..8ac0fc7 100644 --- a/matrix.json +++ b/matrix.json @@ -1,8 +1,8 @@ { "db": [ - { "driver": "mysql", "version": "8.4" }, - { "driver": "sqlite" }, - { "driver": "pgsql", "version": "16" } + { "driver": "mysql", "version": "8.4", "label": "mysql 8.4" }, + { "driver": "sqlite", "label": "sqlite" }, + { "driver": "pgsql", "version": "16", "label": "pgsql 16" } ], "payload": [ { "laravel": "12.*", "php": "8.2", "testbench": "10.*", "collision": "8.*" }, From b5ffd236456cf31870d57eb19dc8ac86e23d0940 Mon Sep 17 00:00:00 2001 From: Marick van Tuil Date: Sun, 12 Apr 2026 11:28:48 +0200 Subject: [PATCH 7/7] Revert db matrix to simple strings --- .github/workflows/run-tests.yml | 10 +++++----- matrix.json | 6 +----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index ce13cc5..23d78c1 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -82,7 +82,7 @@ jobs: db: ${{ fromJson(needs.load-matrix.outputs.db) }} payload: ${{ fromJson(needs.load-matrix.outputs.payload) }} - name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db.label }} + name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db }} steps: - name: Checkout code @@ -99,15 +99,15 @@ jobs: - name: Set up MySQL and PostgreSQL run: | - if [ "${{ matrix.db.driver }}" != "sqlite" ]; then - MYSQL_PORT=3307 POSTGRES_PORT=5432 docker compose up ${{ matrix.db.driver }} -d + if [ "${{ matrix.db }}" != "sqlite" ]; then + MYSQL_PORT=3307 POSTGRES_PORT=5432 docker compose up ${{ matrix.db }} -d fi - name: Install dependencies run: | composer require "laravel/framework:${{ matrix.payload.laravel }}" "orchestra/testbench:${{ matrix.payload.testbench }}" "nunomaduro/collision:${{ matrix.payload.collision }}" --no-interaction --no-update composer update --prefer-stable --prefer-dist --no-interaction - if [ "${{ matrix.db.driver }}" = "mysql" ]; then + if [ "${{ matrix.db }}" = "mysql" ]; then while ! mysqladmin ping --host=127.0.0.1 --user=test --port=3307 --password=test --silent; do echo "Waiting for MySQL..." sleep 1 @@ -116,4 +116,4 @@ jobs: echo "Not waiting for MySQL." fi - name: Execute tests - run: DB_DRIVER=${{ matrix.db.driver }} composer test + run: DB_DRIVER=${{ matrix.db }} composer test diff --git a/matrix.json b/matrix.json index 8ac0fc7..39d38e7 100644 --- a/matrix.json +++ b/matrix.json @@ -1,9 +1,5 @@ { - "db": [ - { "driver": "mysql", "version": "8.4", "label": "mysql 8.4" }, - { "driver": "sqlite", "label": "sqlite" }, - { "driver": "pgsql", "version": "16", "label": "pgsql 16" } - ], + "db": ["mysql", "sqlite", "pgsql"], "payload": [ { "laravel": "12.*", "php": "8.2", "testbench": "10.*", "collision": "8.*" }, { "laravel": "12.*", "php": "8.3", "testbench": "10.*", "collision": "8.*" },