Build-once RC publish: immutable php83/84/85 + bare + :testing (Plan 1)#147
Merged
Conversation
…d recipe (supersedes #146)
…ng; drop -testing; promote php85
… checker, raise publish-testing timeout, doc/comment fixes
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
Plan 1 of the build-once-promote container-pipeline redesign. Makes the
testing-branch publish the single build-once producer of the immutablesimplerisk-minimalimage set, so the RC built from the testing bundle is later promoted (retagged) to prod rather than rebuilt.Design + plan (code-development
docs/superpowers/):specs/2026-07-10-release-image-promotion-design.md,plans/2026-07-10-docker-publish-pipeline-buildonce.md.What changed (5 commits)
generate_dockerfile.sh— decoupled the image version from the app-source mode: new signaturegenerate_dockerfile.sh <version> [context|download]. The RC image now self-reports its realENV version(not the literaltesting). Default PHP → 8.5.generate_dockerfile.sh— folded in thePREGA_BUNDLE_FALLBACKdownload-recipe fallback (prod bundle first → bundles-test pre-GA → hard-fail), superseding ci(container-validation): fall back to testing bundle/SQL when prod artifacts absent (pre-GA) #146 (which can be closed).container-validation.yml— added a PHP 8.5 validation job and fixed the minimal job-key/PHP naming skew (php84built 8.3, etc.).publish-testing.yml— builds php 8.3/8.4/8.5 from the testing bundle and publishes<V>-php83/84/85+ bare<V>+ floatingtesting(bare +testingride only the php85 digest); drops<V>-testing; sets the testing SSM tier to<V>-php85. Timeout raised to 120m for the three sequential multi-arch builds.Dockerfileregenerated to match the generator;test_generate_dockerfile.shadded (non-destructive checker);CLAUDE.mdphp refs updated.Validation
test_generate_dockerfile.sh(context/download modes, realENV version, php-8.5 default, invalid-mode rejection, idempotence) — green.actionlint(publish-testing, container-validation) — clean.shellcheck(both scripts) — clean.Notes
container-validation.ymlonly runs on PRs to master, so image-build validation for this change happens post-merge whenpublish-testing.ymlbuilds the real RC (and at the eventualtesting → masterPR). This PR is the code-review gate.<V>/:latest/ prod-SSM promotion is Plan 2 (a separate manualpromote-latestdispatch); this PR does not touch prod.🤖 Generated with Claude Code