Skip to content

Commit a7a83b3

Browse files
authored
v13 baseline — drop L10/11 + PHP 8.2, add Laravel 13, bump CI matrix (#417)
* chore: bump composer floors to PHP 8.3, Laravel 12|13, Testbench 10|11, PHPUnit 11|12 * ci: rewrite matrix for v13 (PHP 8.3-8.5, Laravel 12/13, prefer-lowest+stable) * docs: update README compat matrix and requirements for v13
1 parent 1f7a407 commit a7a83b3

3 files changed

Lines changed: 91 additions & 42 deletions

File tree

.github/workflows/laravel.yml

Lines changed: 67 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,74 @@ on: [push, pull_request]
55
jobs:
66
laravel-tests:
77
runs-on: ${{ matrix.os }}
8+
continue-on-error: ${{ matrix.experimental == true }}
89
strategy:
9-
fail-fast: true
10+
fail-fast: false
1011
matrix:
11-
os: [ ubuntu-latest ]
12-
php: [ 8.2, 8.3, 8.4 ]
13-
laravel: [ 11.*, 12.* ]
14-
stability: [ prefer-stable ]
15-
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
12+
os: [ubuntu-latest]
13+
php: ['8.3', '8.4']
14+
laravel: ['12.*', '13.*']
15+
dependencies: [prefer-lowest, prefer-stable]
16+
experimental: [false]
17+
include:
18+
# PHP 8.5 non-blocking smoke — 4 combos, all experimental
19+
- { os: ubuntu-latest, php: '8.5', laravel: '12.*', dependencies: prefer-lowest, experimental: true }
20+
- { os: ubuntu-latest, php: '8.5', laravel: '12.*', dependencies: prefer-stable, experimental: true }
21+
- { os: ubuntu-latest, php: '8.5', laravel: '13.*', dependencies: prefer-lowest, experimental: true }
22+
- { os: ubuntu-latest, php: '8.5', laravel: '13.*', dependencies: prefer-stable, experimental: true }
23+
name: "PHP ${{ matrix.php }} / L${{ matrix.laravel }} / ${{ matrix.dependencies }}${{ matrix.experimental && ' (experimental)' || '' }}"
1624

1725
steps:
18-
- uses: actions/checkout@v4
19-
- name: Setup PHP
20-
uses: shivammathur/setup-php@v2
21-
with:
22-
php-version: ${{ matrix.php }}
23-
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
24-
coverage: none
25-
- name: Cache dependencies
26-
uses: actions/cache@v4
27-
with:
28-
path: ~/.composer/cache/files
29-
key: ${{ runner.os }}-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
30-
restore-keys: |
31-
${{ runner.os }}-${{ matrix.php }}-composer-
32-
- name: Install dependencies
33-
run: |
34-
composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update
35-
composer update --${{ matrix.stability }} --prefer-dist --no-interaction
36-
- name: Execute tests (Unit and Feature tests) via PHPUnit
37-
run: vendor/bin/phpunit
26+
- uses: actions/checkout@v4
27+
28+
- name: Setup PHP
29+
uses: shivammathur/setup-php@v2
30+
with:
31+
php-version: ${{ matrix.php }}
32+
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
33+
coverage: none
34+
35+
- name: Cache composer dependencies
36+
uses: actions/cache@v4
37+
with:
38+
path: ~/.composer/cache/files
39+
key: ${{ runner.os }}-php${{ matrix.php }}-L${{ matrix.laravel }}-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}
40+
restore-keys: |
41+
${{ runner.os }}-php${{ matrix.php }}-L${{ matrix.laravel }}-${{ matrix.dependencies }}-
42+
${{ runner.os }}-php${{ matrix.php }}-
43+
44+
- name: Pin Laravel version for this job
45+
run: |
46+
composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update
47+
48+
- name: Install dependencies (${{ matrix.dependencies }})
49+
run: |
50+
composer update --${{ matrix.dependencies }} --prefer-dist --no-interaction
51+
52+
- name: Verify Laravel floor (prefer-lowest only)
53+
if: matrix.dependencies == 'prefer-lowest' && matrix.experimental != true
54+
run: |
55+
set -euo pipefail
56+
resolved=$(composer show laravel/framework --format=json | php -r 'echo json_decode(stream_get_contents(STDIN), true)["versions"][0];' | sed 's/^v//')
57+
case "${{ matrix.laravel }}" in
58+
12.*) min="12.0.0" ;;
59+
13.*) min="13.0.0" ;;
60+
*) echo "Unknown Laravel major: ${{ matrix.laravel }}"; exit 1 ;;
61+
esac
62+
R="$resolved" M="$min" php -r '
63+
$r = getenv("R");
64+
$m = getenv("M");
65+
if ($r === "" || $m === "") {
66+
fwrite(STDERR, "Version extraction failed (resolved=\"$r\", min=\"$m\")\n");
67+
exit(2);
68+
}
69+
if (version_compare($r, $m, "<")) {
70+
fwrite(STDERR, "laravel/framework resolved to $r, below declared floor $m for Laravel ${{ matrix.laravel }}\n");
71+
exit(1);
72+
}
73+
echo "laravel/framework resolved to $r (floor $m) -- ok\n";
74+
'
75+
76+
- name: Execute tests (PHPUnit)
77+
# PR 2 uses PHPUnit; PR 3 replaces this with `vendor/bin/pest`.
78+
run: vendor/bin/phpunit

README.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<img src="https://github.com/codestudiohq/laravel-totem/blob/8.0/resources/assets/img/totem.png?raw=true" alt="Laravel Totem"/>
33
</p>
44
<p align="center">
5-
<img src="https://github.com/always-open/laravel-totem/workflows/Laravel/badge.svg?branch=11.x" alt="Build Status">
5+
<img src="https://github.com/always-open/laravel-totem/workflows/Laravel/badge.svg?branch=13.x" alt="Build Status">
66
<a href="https://packagist.org/packages/studio/laravel-totem"><img src="https://poser.pugx.org/studio/laravel-totem/license.svg" alt="License"></a>
77
</p>
88

@@ -14,15 +14,23 @@ Manage your `Laravel Schedule` from a pretty dashboard. Schedule your `Laravel C
1414

1515
#### Compatibility Matrix
1616

17-
| <span align="left">Laravel</span> | <span align="left">Totem</span> |
18-
|:----------------------------------|--------------------------------:|
19-
| 12.x | 11.x |
20-
| 11.x | 11.x |
17+
| Laravel | Totem | Notes |
18+
|:--------|------:|:---------------------------------------------|
19+
| 13.x | 13.x | Current |
20+
| 12.x | 13.x | Current release line — Laravel 13 runtime support |
21+
| 12.x | 12.x | Maintained |
22+
| 11.x | 12.x | Maintained |
23+
| 11.x | 11.x | Maintained |
24+
| 10.x | 11.x | Maintained |
2125

2226
#### Requirements
2327

24-
- PHP 8.2+
25-
- Laravel 11.x or 12.x
28+
- PHP 8.3+
29+
- Laravel 12.x or 13.x
30+
31+
Earlier Totem majors are maintained for legacy Laravel support:
32+
- Totem 12.x supports Laravel 11.x and 12.x (PHP 8.2+).
33+
- Totem 11.x supports Laravel 10.x, 11.x, and 12.x (PHP 8.2+).
2634

2735
#### Installing
2836

composer.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@
2020
}
2121
],
2222
"require": {
23-
"php": "^8.2.0",
23+
"php": "^8.3",
2424
"ext-json": "*",
25-
"illuminate/bus": "^10.0|^11.0|^12.0",
26-
"illuminate/console": "^10.0|^11.0|^12.0",
27-
"illuminate/contracts": "^10.0|^11.0|^12.0",
28-
"illuminate/database": "^10.0|^11.0|^12.0",
29-
"illuminate/events": "^10.0|^11.0|^12.0",
30-
"illuminate/notifications": "^10.0|^11.0|^12.0"
25+
"illuminate/bus": "^12.0|^13.0",
26+
"illuminate/console": "^12.0|^13.0",
27+
"illuminate/contracts": "^12.0|^13.0",
28+
"illuminate/database": "^12.0|^13.0",
29+
"illuminate/events": "^12.0|^13.0",
30+
"illuminate/notifications": "^12.0|^13.0"
3131
},
3232
"require-dev": {
3333
"laravel/slack-notification-channel": "^3.7",
3434
"laravel/vonage-notification-channel": "^3.3",
35-
"orchestra/testbench": "^8.0|^9.0|^10.0",
36-
"phpunit/phpunit": "^10.0|^11.0|^12.0"
35+
"orchestra/testbench": "^10.0|^11.0",
36+
"phpunit/phpunit": "^11.0|^12.0"
3737
},
3838
"suggest": {
3939
"laravel/slack-notification-channel": "Required for Slack notifications.",

0 commit comments

Comments
 (0)