Repository navigation
feat(cd): one bake target list per architecture lane (BAKE_PUBLISH_TARGETS_LINUX_ARM64) — shared artifact store increment 2 - #7004
Merged
Conversation
…ARGETS_LINUX_ARM64 for the arm64 lane Increment 2 of Doc/Architecture/SharedArtifactStore. The control-owned shared artifact store keeps one bundle subtree per runtime identifier (<account>/<share>/linux-x64, …/linux-arm64) because a compatibility key names no architecture and the publisher refuses a second one under it. Every platform-bake lane received the SAME target list and published to every entry, so a store subtree in it would receive both architectures. The arm64 lane now reads vars.BAKE_PUBLISH_TARGETS_LINUX_ARM64 when provisioned (falling back to today's list, unchanged, when not), and every step of the lane that names targets — publish, the registry push's lease, the availability assert, the preflight — reads the same per-lane value. The amd64 lane and module repositories are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Registry publications still collide across architectures, and the rollout instructions include incompatible arm64 destinations.
2 open issues
What changed in this PR
Adds architecture-specific bake targets for the control-owned shared artifact store, preserving existing behavior until the arm64 variable is provisioned.
Changes:
- Uses the per-lane target list for preflight, publication, registry leases, and availability checks.
- Documents the variable provisioning order and rollout steps.
| File | Description |
|---|---|
| src/MeshWeaver.Documentation/Data/Architecture/SharedArtifactStore.md | Updates architecture-specific publication and rollout guidance. |
| .github/workflows/main-cd.yml | Selects arm64 targets with fallback to the existing list. |
Review effort: Balanced
…re-aware yet) and says so; the arm64 list names only arm64-compatible destinations Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rbuergi
enabled auto-merge (squash)
October 20, 2026 15:40
Contributor
Test Results 27 files 27 suites 1h 2m 21s ⏱️ Results for commit d0fe0b4. |
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.

Why
The control-owned shared artifact store (
Doc/Architecture/SharedArtifactStore; #6999 and #7000, both merged) keeps one bundle subtree per runtime identifier, for example<account>/<share>/linux-x64and…/linux-arm64. It has to, because a compatibility key (c003e001) names no architecture and the publisher refuses a second architecture under an existing key.Core CD's
publish-bakejob runs one lane per architecture. Every lane currently receives the samevars.BAKE_PUBLISH_TARGETSand publishes to every entry. A store subtree in that list would therefore receive both architectures, and the arm64 lane would trip the architecture guard. Review found this on #6999.What
publish-bakejob only, every target list now comes from a per-lane value:matrix.arch == 'linux-arm64' && vars.BAKE_PUBLISH_TARGETS_LINUX_ARM64 || vars.BAKE_PUBLISH_TARGETS.bake-publication-lock.sh) and the availability assert. Within a lane they all read the same list, so the lease path and the publication path cannot disagree.BAKE_PUBLISH_TARGETS_LINUX_ARM64is not provisioned, so the arm64 lane falls back to the shared list exactly as before. The amd64 lane,published-modulesand the module repositories'node-repo-publish-bake.yml(linux-x64 only) are untouched.linux-x64subtree is added to the amd64 list.Evidence
actionlintonmain-cd.ymlgives the same 5 pre-existing style/info findings before and after; there are no new ones.Live effect
None until a maintainer provisions
BAKE_PUBLISH_TARGETS_LINUX_ARM64, which is a maintainer step.🤖 Generated with Claude Code