Move PHP/FrankenPHP binaries to a dedicated 'artifacts' release#59
Merged
munezaclovis merged 2 commits intomainfrom Apr 14, 2026
Merged
Move PHP/FrankenPHP binaries to a dedicated 'artifacts' release#59munezaclovis merged 2 commits intomainfrom
munezaclovis merged 2 commits intomainfrom
Conversation
FrankenPHP and static PHP CLI binaries previously lived on whatever v* release happened to be latest, carried forward by a copy step on every new pv release. Their lifecycle (weekly cron against php/frankenphp:latest) has nothing to do with pv's own semver, so that coupling meant: - pv release notes polluted with unrelated binary assets - every new pv tag babysitting a forward-copy of binaries it didn't actually change - install URLs depending on "latest v* tag" instead of a stable target Move all FrankenPHP + PHP CLI binaries to a single, non-versioned "artifacts" release (marked --latest=false so v* stays the user-facing latest). build-frankenphp.yml now creates the release if missing and always clobbers it; release.yml drops the copy step entirely; the Go install path hits github.com/prvious/pv/releases/download/artifacts/... directly, and latestReleaseTag() is gone. Clean break: after merge, users with pre-v0.0.6 installs will still fetch binaries from their original v* release URLs (historical); new installs go through the artifacts release. Before tagging v0.0.6, the artifacts release must be seeded — either by triggering build-frankenphp.yml on main, or by creating and copying assets manually.
build-frankenphp.yml also builds the static PHP CLI (not just FrankenPHP) and now uploads to the dedicated "artifacts" release, so rename it to build-artifacts.yml with display "Build PHP Artifacts". release.yml no longer carries any PHP binaries — only the pv CLI ships there now — so rename it to release-pv.yml with display "Release pv". Also updates the concurrency group name, the release-notes string, and the in-code comment reference to match.
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.
Summary
artifactsrelease (marked--latest=falsesov*stays the user-facing latest).build-frankenphp.yml: creates theartifactsrelease if missing, then clobbers on every rebuild — no more hunting for the "latestv*tag".release.yml: drops the forward-copy step entirely. pv releases now ship only the pv binary.install.goandavailable.gohitreleases/download/artifacts/...directly;latestReleaseTag()is gone, along with itsencoding/json/ioimports.Why
FrankenPHP and PHP CLI binaries have their own lifecycle (weekly cron against
php/frankenphp:latest). Previously they were attached to whatever pvv*release happened to be "latest", and every new pv tag had to babysit a forward-copy step just to preserve install URLs. That meant:release.ymlthat's silently load-bearing for installsSeparation fixes all three.
The
artifactsrelease does not exist yet. Before merging / tagging the next pv version:artifactsrelease. Either:build-frankenphp.ymlonmain(manualworkflow_dispatch) after merge. The workflow now creates the release on first run. Until it completes,pv php:installon the new code will 404.gh release create artifacts --latest=false --title \"PHP binaries\" --notes \"...\"and copy currentphp-*/frankenphp-*assets fromv0.0.5into it.Pre-v0.0.6 pv installs already out in the wild are unaffected — they download from their original
v*URLs. The clean break only matters for new installs on v0.0.6+.Files
Test plan