v2 line: root takeover (compose-first) + release plumbing - #54
Open
thomasboni wants to merge 1 commit into
Open
Conversation
Move everything v1 (compose.yml, compose.local.yml, .env.example, .env.local.example, configmap/podman examples, .docker/, charts/, install.sh, scripts/, versions.env) into legacy-v1/ unchanged. Author the v2 root compose.yml (backend/frontend/postgres:18-alpine/redis:7-alpine, no build: sections, named volumes, healthchecks), .env.example (PLATFORM_VERSION=v2.0.0 first line per the release workflow's sed contract), and README.md (v2 quick start + bootstrap + upgrade story + legacy-v1 pointer). Add .github/workflows/publish-release.yml, which tags and creates the GitHub Release once the monorepo's release PR (bumping latest.json) is merged to main. Update ci.yml/release.yml's chart paths so v1's own Helm lint/release pipeline keeps working from its new location. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUFtr3m8zC2mVNKVTQvaNz
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
Layout ruling: v2 takes over the repository root; v1 (Helm chart, Docker Compose with bundled
Traefik, podman,
install.sh) moves intolegacy-v1/unchanged (seelegacy-v1/README.md).v2 is compose-first: a minimal root
compose.yml(backend, frontend,postgres:18-alpine,redis:7-alpine, nobuild:sections, named volumes, healthchecks) plus.env.exampleand a newquick-start
README.md. A v2 Helm chart is follow-up work, not in this PR - the README points atlegacy-v1/chartsas the closest reference in the meantime.What moved into
legacy-v1/(git-mv, byte-identical content):compose.yml,compose.local.yml,.env.example,.env.local.example,configmap.yml.example,configmap.local.yml.example,podman.yml.example,podman.local.yml.example,.docker/,charts/,install.sh,scripts/,versions.env..github/workflows/ci.ymland.github/workflows/release.yml(v1's own Helm lint/chart-release pipeline) had their paths toscripts//charts/updated to the newlegacy-v1/location - no other change to either workflow,v1's own CI/release behavior is otherwise untouched.
New at root:
compose.yml,.env.example(PLATFORM_VERSION=v2.0.0as the first line - thisis the exact contract the monorepo's
release.ymlsed step targets, do not rename that variable oneither side without updating the other),
README.md(quick start: configure,docker compose up -d,plumber-bootstrap, then log in; the upgrade story; the legacy-v1 pointer).New:
.github/workflows/publish-release.yml- on a push tomainwherelatest.jsonchanged, it reads the version, tags it, and runs
gh release createwithreleases/<version>.mdas the notes file. This reacts to Thomas merging the monorepo's own release PR (which is the one
that bumps
.env.example/latest.json/releases/<version>.md) - it never opens or approvesanything itself.
releases/.gitkeepadded so the directory exists ahead of the first release PR.One deliberate deviation from the brief's literal wording: hardening comments in
compose.yml/.env.exampleare written self-contained rather than pointing atdocs/ops-notes.md- that file lives in the privategetplumber/monorepo, unreachable from thispublic repo, so a literal path reference would be broken/confusing for an external operator.
One thing this PR does NOT solve, flagged for review:
compose.ymlexposes backend andfrontend on two separate host ports; the frontend's browser-side code calls the API at the same
origin under
/apiwith no client config (platform/frontend's ownenv.ts), which needs areverse proxy in front routing
/api/*to backend and everything else to frontend on one publichostname. This compose file deliberately does not bundle one (kept minimal, no Traefik) - both the
compose.ymlcomment on thefrontendservice and the README call this out explicitly so it isn'tsilently missed at install time.
This PR is the prerequisite for the first v2.0.0 release run: the monorepo's on-demand
release.ymlworkflow opens its own release PR against this repo's.env.example/latest.jsonusing the exact paths this PR establishes.
Test plan
docker compose --env-file <filled .env> -f compose.yml configresolves cleanly (verifiedlocally with placeholder secrets - all four services, healthchecks, and env interpolation
resolve as expected).
compose.yml,.github/workflows/publish-release.yml, and the editedci.yml/release.ymlall parse.docker compose up -dagainst real images oncev2.0.0is published, confirmplumber-bootstrapflags matchcmd/bootstrap's current flag set (verified against source,not run against a live image in this PR).
legacy-v1/'s CI (ci.ymlchart lint/unit tests,release.ymlchart-releaser) stillpasses from its new
legacy-v1/chartspath.