forked from RoushTech/docker
Publish the FRANKENPHP_MERCURE build — Docker Hub still serves the 2026-07-25 image #26
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The
FRANKENPHP_MERCURE=Onsupport is committed here, but the image serving it has notreached Docker Hub —
matthewbaggett/frankenphp:8.5is still the 2026-07-25 build.That digest matches what the registry currently serves for the
8.5tag, and the onlybuild-stamped tags present are
8.2/8.3/8.4/8.5-build-2026-07-25:So the build/push either has not run or did not publish. Worth checking whether the
pipeline is green.
Note that shipping the flag also needs #24 — without an
app-writable Caddy data dir thehub refuses to start, so
FRANKENPHP_MERCURE=Onwould fail on first boot.Reproduced, and the pipeline is not green. Nothing is wrong with the publish logic or the Docker Hub credentials — the build job never ran at all.
Confirmed independently
matthewbaggett/frankenphp:8.5still resolves tosha256:793e376186016d74ee14c0cefc6c6908c3c6c1ead2b20305b92b4148b84b29f7, andgrep -in mercure /etc/services.d/frankenphp/runinside it finds nothing. Exactly as reported.Why
The merge of #16 (
cd67a7eb) triggered run 257 onmain. That run has exactly one task:There is no
Buildtask for that SHA at all (/actions/runs/257/jobs/1/attempt/1/logs→ 404).builddeclaresneeds: [test], so when the test job failed the publish job was never scheduled.The test job failed on infrastructure, not on the diff:
That is the same failure #21 already diagnoses by name ("runs 256, 257:
Internal: unknown blob sha256:... in history") — leaked BuildKit builders fill the runner disk, buildkit's GC then evicts blobs an export still references. #21 is the fix for this issue; it should not be duplicated.Things that are not the problem
--pushgate is correct.${{ github.ref == 'refs/heads/main' && '--push' || '' }}— noACT/secretsguard on the publish path.25aba96) on the PR branch, and its build job loggedLogin Succeeded!and completed. It correctly omitted--pushbecause it was not onmain("No output specified for … To push result image into registry use--push").8.x-build-2026-07-25tags come from run 238, whose Build task also failed but had pushed some targets before dying.mainhas not had a clean green Build since the test gate landed in #9.Structural note (not filed as a fix — #18/#20/#21 all touch build.yml already)
buildis wrapped innick-fields/retrywithmax_attempts: 5;testhas no retry. So any flaky infra failure in the gate blocks all publishing, while the same flake in the build itself is retried away. Once #21 lands that matters less, but it is why one bad run cost ten days of releases.The #24 dependency is already satisfied on main
Good news — #24 is stale, filed against the 2026-07-25 image. The fix shipped in the same commit as the Mercure support (
25aba96):FrankenPHP.Dockerfile:55—install -d -o app -g app /var/cache/frankenphpfs/php-frankenphp/etc/services.d/frankenphp/run:130—XDG_DATA_HOME=/var/cache/frankenphpVerified by building
frankenphp-85-basefrommainlocally and booting it withFRANKENPHP_MERCURE=On:No
mkdir /root/.local: permission denied. The hub starts. One residual, non-fatal:XDG_CONFIG_HOMEis still unset, so Caddy logsunable to create folder for config autosave "/root/.config/caddy"— cosmetic, does not block startup, worth a one-line follow-up.What actually needs to happen
main, which triggers Build →--push→ the Mercure image reaches Docker Hub. This issue closes as a side effect. If #21 is landed some other way, aworkflow_dispatchonmaindoes the same job.No code change is warranted here.
Verified against the registry rather than the merge — the image is out and it works.
The artifact
Was
sha256:793e376186016d74ee14c0cefc6c6908c3c6c1ead2b20305b92b4148b84b29f7. Build-stamped tags now present for every version:Mercure is in the run script, where the reporter found nothing before:
It actually starts
The #24 dependency mattered, so this is the published image booted with the flag on, not a local build:
No
mkdir /root/.local: permission denied, and the bolt transport has its data directory. The/root/.config/caddyautosave warning I saw on an earlier local build is also gone, courtesy of #31.What was actually wrong
Two stacked pipeline faults, no defect in the Mercure code itself:
needs: [test]meant the publish job was never scheduled — fixed by #21.pushing layersto Docker Hub. That is also the likely origin of the incomplete 2026-07-25 tag set: a publish cancelled mid-push updates some targets and not others.#33 addresses the second by keying main's group on the commit sha.
Caveat worth recording: the publish that finally succeeded (run 286) was the last main push in a burst of three, and runs 284 and 285 were cancelled despite both already carrying #33's fix. So this issue is resolved, but #33 is not yet proven to work — see my note there. It is possible main simply got a quiet 30 minutes rather than being protected.