{{ message }}
Repository navigation
chore: bump symfony-docker and automate the pin - #3012
Merged
Merged
Conversation
Picks up the prod-image TLS verification fix (SSL_CERT_FILE), the opcache.interned_strings_buffer bump to 32 and the migration-check fix in docker-entrypoint.sh. Also drops init-firewall.sh and the preinstalled coding-agent files from scaffolded devcontainers, which upstream removed in favour of an opt-in setup.
Weekly check against upstream main. Only fires when a file the scaffold actually copies changed, and boots the scaffolded Docker stack on the candidate SHA before opening the PR — a PR pushed with GITHUB_TOKEN triggers no workflows, so that run is the only evidence. Also runs e2e on pull requests so human scaffold changes get the same coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Closes #3008.
Why the pin stays a SHA
SymfonyScaffoldfetches Docker infrastructure fromdunglas/symfony-dockeron the user's machine, at install time, and aDockerfileplusdocker-entrypoint.share executable code. Pointing atmainwould ship whatever upstream HEAD happens to be, unreviewed, into everyapi-platform new. Two more reasons it has to stay pinned:ComposeOverrideWriterpatchescompose.yamlstructurally — it walksservices.{php|frankenphp}.environmentand throws when it can't find it. An upstream restructure would break scaffolding for everyone at once, with no fix short of an emergency release.So: keep the pin, but stop letting it rot.
1. Bump the pin (
3c0d177→4227566)Eleven upstream commits. Of the files the scaffold copies, four changed:
DockerfileSSL_CERT_FILE— real TLS-verification fix in the prod image; drops the devcontainer firewall/sudo toolingfrankenphp/conf.d/10-app.iniopcache.interned_strings_buffer16 → 32frankenphp/docker-entrypoint.shfind … | grep -q .frankenphp/CaddyfilePermissions-PolicyheaderBehaviour change worth flagging: since #3000 added
.devcontainerto the copy list, this bump also removesinit-firewall.sh,AGENTS.mdand.claude/settings.jsonfrom scaffolded devcontainers — upstream dropped the preinstalled coding agents in favour of an opt-in setup.AgentsScaffold(#2993) already writesAGENTS.md/CLAUDE.mdat the project root, so nothing is lost there.compose.yaml,compose.override.yaml,compose.prod.yamland.dockerignoreare untouched upstream, so the Hydra+Mercure patch still applies cleanly.2. Keep it fresh automatically
.github/workflows/symfony-docker-bump.ymlruns weekly (and on dispatch):main;docs/,README.md, upstream CI), so this is most of the noise gone;--with-dockerproject,docker compose up --wait, hits/docs.jsonld, and asserts the Hydra + MercureLinkheaders;The validation runs before the PR is opened on purpose: a PR pushed with
GITHUB_TOKENtriggers no workflows, so this run is the only evidence the bump works. If you'd rather haveci.yml/e2e.ymlrun on the bot PR itself, swapping in a PAT or App token is the only change needed — there's a comment in the workflow saying so.On the Link-header assertion
Upstream's Caddyfile uses
header ?Link— set only if not already set — and API Platform emits its own HydraLinkon every response it handles. So assertingrel="mercure"on/docs.jsonldfails on a perfectly healthy stack. The check probes a Caddy-served path instead, which is where the injected directive is actually observable. Verified both directions locally:3. Run e2e on pull requests
e2e.ymlonly ran on push tomain, so no PR touching the scaffold — bot or human — ever got Docker coverage. Now it runs on PRs touchingbin/,src/,templates/,scripts/,composer.jsonor the workflow itself, with in-progress runs cancelled.Supporting change
SymfonyDockerPin(+scripts/symfony-docker-pin.php) reads/rewrites the pin and filters upstream paths againstDOCKER_FILES, so the workflow never restates the pin format or the copy list in YAML where they'd drift from the scaffold.pinrefuses a no-op, so a renamed constant can't silently produce an empty PR.DOCKER_FILESis now public — the existing test already reached for it via reflection, which is gone.Verification
4227566locally:/docs.jsonld200, compose patch intact, Link-header probe confirmed discriminating in both directions.