Skip to content

feat(cd): one bake target list per architecture lane (BAKE_PUBLISH_TARGETS_LINUX_ARM64) — shared artifact store increment 2 - #7004

Merged
rbuergi merged 2 commits into
mainfrom
feat/bake-targets-per-architecture
Oct 20, 2026
Merged

rbuergi merged 2 commits into
mainfrom
feat/bake-targets-per-architecture

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

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-x64 and …/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-bake job runs one lane per architecture. Every lane currently receives the same vars.BAKE_PUBLISH_TARGETS and 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

  • In the publish-bake job 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.
  • That covers the preflight, Publish bundles, the registry push's lease (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.
  • Behaviour today is unchanged. BAKE_PUBLISH_TARGETS_LINUX_ARM64 is not provisioned, so the arm64 lane falls back to the shared list exactly as before. The amd64 lane, published-modules and the module repositories' node-repo-publish-bake.yml (linux-x64 only) are untouched.
  • The design doc's increment 2 and maintainer step 3 are updated. The arm64 variable must be provisioned before the store's linux-x64 subtree is added to the amd64 list.

Evidence

  • actionlint on main-cd.yml gives the same 5 pre-existing style/info findings before and after; there are no new ones.
  • The YAML parses.

Live effect

None until a maintainer provisions BAKE_PUBLISH_TARGETS_LINUX_ARM64, which is a maintainer step.

🤖 Generated with Claude Code

…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>
Copilot AI balanced review requested due to automatic review settings October 20, 2026 15:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread .github/workflows/main-cd.yml
Comment thread src/MeshWeaver.Documentation/Data/Architecture/SharedArtifactStore.md Outdated
…re-aware yet) and says so; the arm64 list names only arm64-compatible destinations

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 20, 2026 15:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Target selection is consistent, and both previously identified architecture-collision issues are addressed.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

@rbuergi
rbuergi enabled auto-merge (squash) October 20, 2026 15:40
@github-actions

Copy link
Copy Markdown
Contributor

Test Results

    27 files      27 suites   1h 2m 21s ⏱️
13 917 tests 13 720 ✅ 197 💤 0 ❌
13 947 runs  13 750 ✅ 197 💤 0 ❌

Results for commit d0fe0b4.

@rbuergi
rbuergi merged commit e3dc85a into main Oct 20, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants