Skip to content

[major] Upgrade Milliner to PHP 8.4 and Symfony 8.1 - #191

Open
joecorall wants to merge 6 commits into
5.xfrom
php-8.4-symfony-8.1
Open

[major] Upgrade Milliner to PHP 8.4 and Symfony 8.1#191
joecorall wants to merge 6 commits into
5.xfrom
php-8.4-symfony-8.1

Conversation

@joecorall

@joecorall joecorall commented Jul 22, 2026

Copy link
Copy Markdown
Member

What does this Pull Request do?

Upgrades Milliner—the supported application in Crayfish—to PHP 8.4.1+ and Symfony 8.1. This modernizes its runtime, dependencies, configuration, and test infrastructure while preserving its Drupal-to-Fedora behavior and aligning it with the Alpine 3.24 container line.

CrayFits, Homarus, Houdini, Hypercube, and Recast are deprecated and are not ported as part of this change.

What's new?

  • Raises Milliner's minimum runtime from PHP 8.0 to PHP 8.4.1 and upgrades Symfony from 5.4 to 8.1.
  • Updates the Composer dependency graph, adds a committed composer.lock, and upgrades the development stack to PHPUnit 12.5 and Symfony PHPUnit Bridge 8.1.
  • Modernizes Symfony routing, security, JWT, service, framework, runtime, and PHPUnit configuration.
  • Explicitly declares the Guzzle, PSR HTTP/logging, Sodium, and Symfony Security dependencies used by Milliner.
  • Fixes compatibility and error-handling issues found during the upgrade, including authenticated Fedora resource probes, query-safe removal of _format=jsonld, missing Content-Location handling, invalid JSON-LD resource URLs/graphs, and invalid modified dates.
  • Expands unit coverage for node/media save paths, external resources, versions, link handling, authentication, and malformed input.
  • Adds a forward-compatibility contract test against islandora/fcrepo6:main covering create, update, version, and delete operations.
  • Adds a full ISLE integration test that creates, updates, and deletes an Islandora object through Drupal REST and verifies the resulting Fedora lifecycle through ActiveMQ, Alpaca, and the Milliner code from this PR.
  • Replaces the legacy shared CI harness with repository-local PHP 8.4 validation, dependency audit, coding-standard checks, unit tests, and integration jobs. GitHub Actions are commit-pinned.
  • Removes the broken Codecov workflow integration and configuration. Local coverage remains available through composer coverage.
  • Updates the root and Milliner READMEs with the supported runtime and deprecated-service boundary.

Documentation is updated in this PR. Existing deployments must move to PHP 8.4.1+ (or the corresponding new Milliner container) before adopting this release. The deprecated Crayfish applications remain in the repository but are not upgraded or exercised by the current Milliner CI.

How should this be tested?

Run the local validation and unit suite:

cd Milliner
composer install --no-interaction --prefer-dist
composer validate --strict --no-check-publish
composer audit --locked --abandoned=fail
composer test

The expected unit result is 49 tests and 111 assertions.

The pull request should also have all three CI jobs passing:

  • PHP 8.4 validates Composer, audits the lock file, checks PSR-2 formatting, and runs the unit suite.
  • Fcrepo6 main contract runs Milliner's focused lifecycle contract against islandora/fcrepo6:main.
  • Drupal to Fcrepo6 lifecycle starts the pinned isle-site-template stack with the Milliner source from this PR, then runs the PHPUnit lifecycle test inside the CI Milliner container.

Additional Notes:

Coordinated pull requests:

Recommended merge/pin order:

  1. Merge Crayfish-Commons De-CLAWing readme files #71.
  2. Merge this Crayfish PR.
  3. Update isle-buildkit's immutable Crayfish source pin/checksum to the final merged commit, then merge isle-buildkit #577 and publish the Alpine 3.24 images.

Interested parties

@Islandora/8-x-committers

@joecorall
joecorall marked this pull request as ready for review July 22, 2026 16:56
@joecorall
joecorall marked this pull request as draft July 22, 2026 17:08
joecorall and others added 4 commits July 29, 2026 11:55
Add trustworthy service tests, real Fcrepo6 and site-template lifecycle lanes, and fix authorization, JSON-LD URL handling, and media-version validation uncovered by them.
Remove the broken Codecov upload and build the site-template test image from the published PHP 8.4 runtime so application CI is independent of Alpine package-pin churn.
@joecorall
joecorall force-pushed the php-8.4-symfony-8.1 branch from b02435b to 71504a7 Compare July 29, 2026 14:53
@joecorall
joecorall requested a review from a team July 29, 2026 14:54
@joecorall
joecorall force-pushed the php-8.4-symfony-8.1 branch from 71504a7 to 1a4fbe7 Compare July 29, 2026 15:02
@joecorall
joecorall marked this pull request as ready for review July 29, 2026 15:08
@aOelschlager
aOelschlager self-requested a review July 29, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant