Skip to content

ci: build a trimmed frankenphp, upstream's binary is nearly all of every package - #256

Draft
landsman wants to merge 2 commits into
mainfrom
devops/frankenphp-builder
Draft

landsman wants to merge 2 commits into
mainfrom
devops/frankenphp-builder

Conversation

@landsman

Copy link
Copy Markdown
Owner

Refs #249

Upstream's frankenphp is 89 of the 96 MiB in the macOS zip and carries 80 PHP extensions. This adds a builder with FRANKEN_EXTENSIONS only (25 asked for), for Linux x86_64, Linux aarch64 and macOS arm64, in the upstream builder's container on Linux and with build-static.sh on macOS.

A pull request that touches the builder only measures: the size lands in the job summary and nothing is published. A manual dispatch pushes to ghcr.io/landsman/adminer-desktop/frankenphp and attests the digest. Nothing uses the binary yet: make fetch, make verify and the packages stay on upstream's until the sizes decide it.

Measured locally on Linux aarch64, wc -c and gzip -6:

Build Unpacked Gzipped
upstream 171.5 MB 58.6 MB
25 extensions 105.2 MB 32.9 MB
and only cbrotli in XCADDY_ARGS 102.8 MB 32.3 MB

nomercure is in the build but not measured: Mercure stays otherwise, because frankenphp's own Caddy module imports it. This PR's run gives the first number for it, and the first for macOS.

The extension list is not proven against the app. The local builds only booted and served a test page through launcher/Caddyfile; make check, make qa and make e2e have not run on such a binary, and they must before anything switches to it.

Verified with make qa, shellcheck, actionlint and tests/cli/build-frankenphp-test.sh, seen failing once with the extension match loosened. make e2e was not run, as no app code changed. The publish path has never run: oras is only stubbed in the test.

This branch has not been deployed

No deployments
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