fix: separate edge and release image channels - #54
Conversation
|
/agentic_review |
📝 WalkthroughWalkthroughThe image workflow now validates publication refs, publishes immutable commit-based manifests with conditional release channels, and inspects those images directly. The release workflow rejects reused tags and atomically pushes release commits and tags. Documentation records the OCI publication rules. ChangesOCI image publishing and release coordination
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant GitHubActions
participant GitRemote
participant DigestArtifacts
participant Registry
GitHubActions->>GitRemote: Read release tags and master head
GitHubActions->>DigestArtifacts: Validate platform digest filenames
GitHubActions->>Registry: Inspect existing image tags
GitHubActions->>Registry: Publish commit and conditional channel manifests
GitHubActions->>Registry: Inspect and scan sha commit image
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code Review by Qodo
Context used✅ Compliance rules (platform):
31 rules 1.
|
0b593a1 to
0ff7738
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 0ff7738 |
0ff7738 to
e477b93
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit e477b93 |
PR Summary by QodoFix: keep OCI release image tags immutable (edge/sha vs X.Y.Z/latest)
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
|
Code review by qodo was updated up to the latest commit e477b93 |
e477b93 to
07f545a
Compare
|
已按最新 Qodo 意见逐项处理,并在 rebase 到
完整验证:633 passed, |
07f545a to
2383d4a
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 2383d4a |
2383d4a to
2cc9d30
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 2cc9d30 |
2cc9d30 to
753eb2b
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 56a7fbd |
56a7fbd to
e27204c
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit e27204c |
a839ccf to
58f9f4c
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 58f9f4c |
58f9f4c to
aba68dc
Compare
|
/agentic_review Review against the documented contract in this PR. In particular, workflow-level cancellation for superseded master builds is an explicit product requirement. The possibility of a cancellation after digest publication is intentionally accepted and documented with registry cleanup assumptions and concrete reevaluation triggers; do not suggest removing that required cancellation behavior unless a mitigation preserves the same semantics and the single-command manifest design. |
|
Code review by qodo was updated up to the latest commit aba68dc |
Summary
edgeandsha-<commit>latest, andsha-<commit>docker buildx imagetools createcommandRoot cause
Every master build reused the static
1.0.0image tag, so production could run post-release source while still reporting version 1.0.0.Trigger and concurrency boundaries
Renovate is already configured for branch automerge where eligible. An update builds an image only after it reaches
master; unmerged Renovate PRs and merge-queue refs do not trigger the image workflow.Consecutive master pushes share a cancellable group, so only the newest master request continues to update
edge. Each X.Y.Z tag has its own cancellable release group, so a newer master build or a different release cannot cancel formal version publication. A single global group is intentionally avoided because GitHub retains only one pending run per group and could otherwise discard an intermediate release.The single release job runs only when
github.refisrefs/heads/master.Accepted operating boundaries
The manifest step does not inspect the registry before publication and does not enforce tag immutability or stale-run ordering. A superseded master run can be canceled after platform digests are pushed but before they receive a manifest tag; registry cleanup is expected to remove those intermediates. Persistent storage growth, insufficient retention, or added registry cost would trigger a redesign of the cancellation boundary. These risks are accepted in favor of simple publication and rapid edge cancellation.
Validation
prek run --all-filesuv run --with pytest --with pytest-cov -- pytest --cov --cov-branch --cov-report=xml(648 passed)