feat(deploy): flux targets may name a chain mirror as the source Flux reads #1794
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/flux-deploy-mirror-source"
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?
What
A flux deployment target may name the source Flux reads as
mirror_url(an https git URL of the off-cluster chain copy a Forgejo push mirror feeds from Forgejomain) instead ofcodeberg_repo, which stays for the transition. Exactly one of the two, in every flux target shape.NativeFluxthreadmirror_urlthrough; the task keeps 13 keys, one of them the source shape.--mirror-urltobinjovi-flux-deployerv12 (pinned here; sean/builder-images#367) and pins the copies Flux may read per project (https://code.packet.town/sean/{seanfarm,platform-seanfarm}.git).main, so both flux deploy agents mount the writer token at/secrets/forgejofrom a newworkflows-namespace ExternalSecretbinjovi-flux-deployer-forgejo(store admitted by seanfarm #770, deployed).Verified
command/native-flux/registry/container-contract/plan-source/native-agent-api suites: 163 passed.
mix compile --warnings-as-errors,mix format --check-formatted,make contract-checkclean.Activation order
code.packet.town; 3. binjovi-plans switches the two targets tomirror_url.https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
Codeberg leaves the delivery path. A flux deployment target now names the source Flux reads in exactly one of two shapes: codeberg_repo (the retired shape, kept for the transition: the deployer pushes main to Codeberg with a deploy key) or mirror_url, an https git URL of the off-cluster copy a Forgejo push mirror feeds from Forgejo main. Forgejo main is the deploy pointer; the deployer observes the copy and never writes it. - ProjectRegistry accepts either key (never both, never neither) in every flux target shape (base, v6 availability, v14 executor) and validates the URL; the target carries both fields, one nil. - The runtime routes and NativeFlux thread mirror_url through to the task: the payload keeps thirteen keys, one of them the source shape; validation requires exactly one non-empty source. - The agent passes --mirror-url to binjovi-flux-deployer, and pins the copies Flux may read per project: https://code.packet.town/sean/seanfarm.git and https://code.packet.town/sean/platform-seanfarm.git. A well-formed URL outside that list is not a deploy target. - Rollback in the mirror shape moves Forgejo main, so both flux deploy agents mount the writer token at /secrets/forgejo: a new ExternalSecret binjovi-flux-deployer-forgejo in namespace workflows, served by the binjovi-forgejo-writer store (seanfarm #770 admits that namespace). - binjovi-flux-deployer v12 (sean/builder-images#367) is pinned in both FROM lines and the container contract. Tests: the agent emits --mirror-url and never a Codeberg flag, refuses a foreign URL and a task with both keys; NativeFlux queues a mirror task with thirteen keys and no codeberg_repo; the registry accepts each shape and rejects both, neither, and four malformed URLs; the deployment contract asserts the token mounts and the workflows-namespace ExternalSecret. Order of activation: seanfarm's Flux source moves to code.packet.town first, then binjovi-plans switches the two targets to mirror_url. Claude-Session: https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt652452a2d32d8b6705602